Soot - a Java bytecode optimization framework

  • Authors:
  • Raja Vallée-Rai;Phong Co;Etienne Gagnon;Laurie Hendren;Patrick Lam;Vijay Sundaresan

  • Affiliations:
  • Sable Research Group, School of Computer Science, McGill University;Sable Research Group, School of Computer Science, McGill University;Sable Research Group, School of Computer Science, McGill University;Sable Research Group, School of Computer Science, McGill University;Sable Research Group, School of Computer Science, McGill University;Sable Research Group, School of Computer Science, McGill University

  • Venue:
  • CASCON '99 Proceedings of the 1999 conference of the Centre for Advanced Studies on Collaborative research
  • Year:
  • 1999

Quantified Score

Hi-index 0.00

Visualization

Abstract

This paper presents Soot, a framework for optimizing Java bytecode. The framework is implemented in Java and supports three intermediate representations for representing Java bytecode: Baf, a streamlined representation of bytecode which is simple to manipulate; Jimple, a typed 3-address intermediate representation suitable for optimization; and Grimp, an aggregated version of Jimple suitable for decompilation. We describe the motivation for each representation, and the salient points in translating from one representation to another.In order to demonstrate the usefulness of the framework, we have implemented intraprocedural and whole program optimizations. To show that whole program bytecode optimization can give performance improvements, we provide experimental results for 12 large benchmarks, including 8 SPECjvm98 benchmarks running on JDK 1.2 for GNU/Linuxtm. These results show up to 8% improvement when the optimized bytecode is run using the interpreter and up to 21% when run using the JIT compiler.