Soot - a Java bytecode optimization framework. 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 in zbMATH (referenced in 20 articles )

Showing results 1 to 20 of 20.
Sorted by year (citations)

  1. Schäf, Martin; Tiwari, Ashish: Severity levels of inconsistent code (2015)
  2. Raman, Raghavan; Zhao, Jisheng; Sarkar, Vivek; Vechev, Martin; Yahav, Eran: Efficient data race detection for async-finish parallelism (2012)
  3. Chrzaszcz, Jacek; Czarnik, Patryk; Schubert, Aleksy: A dozen instructions make Java bytecode (2011)
  4. Eichberg, Michael; Sewe, Andreas: Encoding the Java virtual machine’s instruction set (2011)
  5. Møller, Anders; Schwartzbach, Michael: XML graphs in program analysis (2011)
  6. Møller, Anders; Schwarz, Mathias: HTML validation of context-free languages (2011)
  7. Tate, Ross; Stepp, Michael; Tatlock, Zachary; Lerner, Sorin: Equality saturation: a new approach to optimization (2011)
  8. Villazón, Alex; Binder, Walter; Moret, Philippe; Ansaloni, Danilo: Comprehensive aspect weaving for Java (2011)
  9. Vechev, Martin; Yahav, Eran; Raman, Raghavan; Sarkar, Vivek: Automatic verification of determinism for structured parallel programs (2010)
  10. Antkiewicz, Michał; Tonelli bartolomei, Thiago; Czarnecki, Krzysztof: Fast extraction of high-quality framework-specific models from application code (2009)
  11. Li, Xin; Ogawa, Mizuhito: An ahead-of-time yet context-sensitive points-to analysis for Java (2009)
  12. Sawin, Jason; Rountev, Atanas: Improving static resolution of dynamic class loading in Java using dynamically gathered environment information (2009)
  13. Review, A.Systematic: Program transformations for light-weight CPU accounting and control in the Java virtual machine (2008)
  14. Milanova, Ana: Composition inference for UML class diagrams (2007)
  15. Ranganath, Venkatesh Prasad; Hatcliff, John: Slicing concurrent Java programs using indus and kaveri (2007)
  16. Saabas, Ando; Uustalu, Tarmo: Type systems for optimizing stack-based code. (2007)
  17. Eichberg, Michael; Kanthak, Sebastian; Kloppenburg, Sven; Mezini, Mira; Schuh, Tobias: Incremental confined types analysis. (2006)
  18. Artho, Cyrille; Biere, Armin: Subroutine inlining and bytecode abstraction to simplify static and dynamic analysis. (2005)
  19. Lhoták, Jennifer; Lhoták, Ondrej: Visualizing program analysis with the soot-eclipse plugin. (2004)
  20. Ranganath, Venkatesh Prasad; Hatcliff, John: Pruning interference and ready dependence for slicing concurrent Java programs (2004)