Concepedia

TLDR

The paper motivates the use of three intermediate representations for Java bytecode and outlines key translation points between them. The authors present Soot, a Java bytecode optimization framework, and aim to demonstrate its effectiveness through intraprocedural and whole-program optimizations on large benchmarks. Soot is implemented in Java and offers three intermediate representations—Baf, Jimple, and Grimp—along with intraprocedural and whole-program optimization passes. Experimental results on 12 large benchmarks show up to 8% speedup with the interpreter and up to 21% with the JIT compiler.

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.

References

YearCitations

Page 1