Soot: a Java Optimization Framework
Soot is a compiler infrastructure and framework for Java bytecodes and Java source code, implemented in Java. It supplies several intermediate representations, including:
- “streamlined” bytecode,
- a typed three-address IR,
- a typed three-address IR with SSA,
- an “aggregated” version of the three-address IR.
Many analyses and optimizations are provided, including several high-quality whole-program pointer analyses, devirtualization of monomorphic call sites, and most standard intraprocedural optimizations. Also enables decompilation of bytecodes to Java source.
Very easy to extend. I use it in my research.