1 / 7

SOOT

SOOT. By Joe Palmer Information taken from http://www.sable.mcgill.ca/soot/tutorial/pldi03/tutorial.pdf. General 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.

gella
Télécharger la présentation

SOOT

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. SOOT By Joe Palmer Information taken from http://www.sable.mcgill.ca/soot/tutorial/pldi03/tutorial.pdf

  2. General 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

  3. Sources Languages • Primarily takes Java Source as its input • Can also take: • SML • Scheme • Eiffel

  4. I.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!!

  5. Phases of the Optimization

  6. Analysis • 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

  7. Strengths and Future Enhancements • 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

More Related