Paddle Home






Sable Home

Paddle: BDD-based context-sensitive interprocedural analysis of Java

Overview top

Paddle is a context-sensitive points-to analysis and call graph construction framework for Soot. Paddle supports several variations of context sensitivity, including the use of call site strings as the context abstraction, object sensitivity, and the Zhu/Calman/Whaley/Lam algorithm. Paddle uses binary decision diagrams (BDDs) to efficiently represent the context-sensitive analysis facts. Paddle is written in the Jedd language, which is compiled to Java.

Paddle is a component of Soot, rather than a standalone program. Therefore, Soot is required to use Paddle, and each version of Paddle is intended for a specific version of Soot. Paddle is distributed separately from Soot to avoid requiring Jedd to compile Soot.

Documentation top

A detailed description of Paddle appears in Chapter 4 of my PhD thesis; more user-oriented instructions are found in Appendix C.

Paddle being a part of Soot, its command-line options are listed in Soot's built-in help feature (use the command-line switch -phase-help cg.paddle), and in the Soot phase options documentation.

Prerequisites top

In order to run, Paddle requires the Jedd runtime (currently version 0.3). This consists of the jedd-runtime.jar, and the BDD backend library for the backend that you wish to use. The BuDDy (default) and CUDD backends are built as .so or .dll files and included in the Jedd distribution. The JavaBDD library can be obtained from The SableJBDD library can be obtained from

In order to compile, Paddle also requires the Jedd translator, and its run-time prerequisites, namely Polyglot and a SAT solver. See the Jedd page for information on using Jedd.

Download top

Paddle is developed within a publicly readable Subversion repository. The Subversion trunk of Paddle is intended to be used with the Subversion trunk of Soot.

I also make nightly builds of Paddle available. The nightly builds are intended to be used with the nightly builds of Soot provided on the same page.

I am now also tagging explicit releases, which can be downloaded below.

Release 0.3 (July 2008)
Contains bug fixes. Release 0.3 of Paddle is intended for use with version 2.3.0 of Soot.

Release 0.2 (January 2006)
Contains bug fix for abc cflow analysis. Release 0.2 of Paddle is intended for use with version 2.2.3 of Soot.

Release 0.1 (October 2005)
Initial release. Release 0.1 of Paddle is intended for use with version 2.2.2 of Soot.

Copyright top

Paddle is freely available under the GNU Lesser General Public License.