Soot, a Tool for Analyzing and Transforming Java Bytecode

Laurie Hendren, Patrick Lam , Ondrej Lhotak, Feng Qian

PLDI 2003 Tutorial


Sunday, June 8

Over the last three years we have had many people use the Soot framework for compiler research and in graduate course projects. However, we find that many people who would like to use the framework find it difficult to get started. This tutorial introduces Soot, a tool for analyzing and transforming Java bytecode which has been developed at McGill University. The tutorial will first provide an overview of the entire system, and then a more in depth look at the intermediate representations produced by Soot. Of particular interest is a typed, three address representation (Jimple) that provides a good foundation for program analysis.

Based on the introductory material the tutorial will then look at various applications of Soot including an overview of the intraprocedural analysis framework, an introduction to the pointer analysis framework, examples of using the framework to modify or instrument bytecode, a discussion of how to encode flow analysis results in attributes and an overview of how Soot has been used to build a decompiler. Attendees should have a basic knowledge of Java, Java bytecode and dataflow analysis.


Laurie Hendren is currently a Professor in the School of Computer Science at McGill University where she has previously led the McCAT optimizing/parallelizing compiler project, and currently leads the Sable group that concentrates on compiling and optimizing Java. Ondrej Lhotak and Feng Qian are currently Ph.D. students at McGill; they have considerable expertise in using Soot and have built substantial components of Soot. Patrick Lam was one of the first Soot developers and is currently a Ph.D. student at MIT.