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 30 articles )

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

1 2 next

  1. Chatterjee, Krishnendu; Ibsen-Jensen, Rasmus; Pavlogiannis, Andreas: Faster algorithms for quantitative verification in bounded treewidth graphs (2021)
  2. Vitalis Salis, Thodoris Sotiropoulos, Panos Louridas, Diomidis Spinellis, Dimitris Mitropoulos: PyCG: Practical Call Graph Generation in Python (2021) arXiv
  3. Amato, Gianluca; Meo, Maria Chiara; Scozzari, Francesca: On collecting semantics for program analysis (2020)
  4. Zhuo, Xilong; Zhang, Chenyi: TFA: an efficient and precise virtual method call resolution for Java (2020)
  5. Dimovski, Aleksandar S.; Brabrand, Claus; Wąsowski, Andrzej: Finding suitable variability abstractions for lifted analysis (2019)
  6. Amato, Gianluca; Rubino, Marco: Experimental evaluation of numerical domains for inferring ranges (2018)
  7. Reis, Jacinto; Mota, Alexandre: Aiding exploratory testing with pruned GUI models (2018)
  8. Chawdhary, Aziem; Singh, Ranjeet; King, Andy: Partial evaluation of string obfuscations for Java malware detection (2017)
  9. Feng, Yu; Martins, Ruben; Wang, Yuepeng; Dillig, Isil; Reps, Thomas W.: Component-based synthesis for complex APIs (2017)
  10. Frumkin, Asya; Feldman, Yotam M. Y.; Lhoták, Ondřej; Padon, Oded; Sagiv, Mooly; Shoham, Sharon: Property directed reachability for proving absence of concurrent modification errors (2017)
  11. Srikanth, Akhilesh; Sahin, Burak; Harris, William R.: Complexity verification using guided theorem enumeration (2017)
  12. Sluşanschi, Emil I.; Dumitrel, Vlad: ADiJaC -- automatic differentiation of Java classfiles (2016)
  13. Schäf, Martin; Tiwari, Ashish: Severity levels of inconsistent code (2015)
  14. Raman, Raghavan; Zhao, Jisheng; Sarkar, Vivek; Vechev, Martin; Yahav, Eran: Efficient data race detection for async-finish parallelism (2012)
  15. De, Arnab; D’Souza, Deepak; Nasre, Rupesh: Dataflow analysis for datarace-free programs (2011)
  16. Hubert, Laurent; Barré, Nicolas; Besson, Frédéric; Demange, Delphine; Jensen, Thomas; Monfort, Vincent; Pichardie, David; Turpin, Tiphaine: Sawja: static analysis workshop for Java (2011)
  17. Møller, Anders; Schwartzbach, Michael: XML graphs in program analysis (2011)
  18. Møller, Anders; Schwarz, Mathias: HTML validation of context-free languages (2011)
  19. Tate, Ross; Stepp, Michael; Tatlock, Zachary; Lerner, Sorin: Equality saturation: a new approach to optimization (2011)
  20. Villazón, Alex; Binder, Walter; Moret, Philippe; Ansaloni, Danilo: Comprehensive aspect weaving for Java (2011) ioport

1 2 next