Download - SOOT
![Page 1: SOOT](https://reader036.vdocuments.site/reader036/viewer/2022082712/56813b12550346895da3bcf6/html5/thumbnails/1.jpg)
SOOTBy Joe Palmer
Information taken from http://www.sable.mcgill.ca/soot/tutorial/pldi03/tutorial.pdf
![Page 2: SOOT](https://reader036.vdocuments.site/reader036/viewer/2022082712/56813b12550346895da3bcf6/html5/thumbnails/2.jpg)
General OverviewGeneral Overview
Developed by Sable Research Group out of McGill University in 1996-1997
Used to optimize Java Bytecode 4 source languages 4 intermediate representations used
![Page 3: SOOT](https://reader036.vdocuments.site/reader036/viewer/2022082712/56813b12550346895da3bcf6/html5/thumbnails/3.jpg)
Sources LanguagesSources Languages
Primarily takes Java Source as its input Can also take:
SMLSchemeEiffel
![Page 4: SOOT](https://reader036.vdocuments.site/reader036/viewer/2022082712/56813b12550346895da3bcf6/html5/thumbnails/4.jpg)
I.R.’sI.R.’s Baf:
Streamlined, stack-based representation of bytecode Abstracts type dependent variations of expressions into a single expression
Jimple: Stack-less, typed, 3-Address representation of bytecode Mix between java source and java bytecode Linearization of a single expression into 3 separate statements
Only refers to 3 local vars or conts at once Only 15 jimple instructions are used
Compared to 200 possible instructions in java bytecode! Shimple:
SSA-form version of Jimple Each local var has a single static point of definition (never reassign) Uses Phi-Nodes for control flow
Grimp: Similar to Jimple but allows trees of expressions together with a
representation of a “new” operator Expressions are “aggregated”
main IR used!!
![Page 5: SOOT](https://reader036.vdocuments.site/reader036/viewer/2022082712/56813b12550346895da3bcf6/html5/thumbnails/5.jpg)
Phases of the OptimizationPhases of the Optimization
![Page 6: SOOT](https://reader036.vdocuments.site/reader036/viewer/2022082712/56813b12550346895da3bcf6/html5/thumbnails/6.jpg)
AnalysisAnalysis
Tested using 8 SPECjvm98 benchmarks running on JDK 1.2 Showed 8% improvement when optimized bytecode is run using
an interpreter 21% improvement when optimized bytecode is run using a JIT
compiler Used in research with traditional compiler analyses,
analyses for software engineering, analysis for distributed programs, and software verification Ptolemy Project Bandera Canvas Project
![Page 7: SOOT](https://reader036.vdocuments.site/reader036/viewer/2022082712/56813b12550346895da3bcf6/html5/thumbnails/7.jpg)
Strengths and Future Strengths and Future EnhancementsEnhancements Used as a common infrastructure with which
researchers could compare common analyses Enhancements coming:
Attribute management Attribute legends Improved visual attributes in source Interactive CFGs Growable graphical callgraph Making conversion from Java to Jimple more stable and
complete