Jedd: a BDD-based relational extension of Java

In this paper we present Jedd, a language extension to Java that supports a convenient way of programming with Binary Decision Diagrams (BDDs). The Jedd language abstracts BDDs as database-style relations and operations on relations, and provides static type rules to ensure that relational operations are used correctly.The paper provides a description of the Jedd language and reports on the design and implementation of the Jedd translator and associated runtime system. Of particular interest is the approach to assigning attributes from the high-level relations to physical domains in the underlying BDDs, which is done by expressing the constraints as a SAT problem and using a modern SAT solver to compute the solution. Further, a runtime system is defined that handles memory management issues and supports a browsable profiling tool for tuning the key BDD operations.The motivation for designing Jedd was to support the development of whole program analyses based on BDDs, and we have used Jedd to express five key interrelated whole program analyses in our Soot compiler framework. We provide some examples of this application and discuss our experiences using Jedd.

[1]  Edmond Schonberg,et al.  Programming with Sets: An Introduction to SETL , 1986 .

[2]  William F. Clocksin,et al.  Programming in Prolog , 1987, Springer Berlin Heidelberg.

[3]  Randal E. Bryant,et al.  Symbolic Boolean manipulation with ordered binary-decision diagrams , 1992, CSUR.

[4]  Shin-ichi Minato,et al.  Zero-Suppressed BDDs for Set Manipulation in Combinatorial Problems , 1993, 30th ACM/IEEE Design Automation Conference.

[5]  David M. Beazley,et al.  SWIG: An Easy to Use Tool for Integrating Scripting Languages with C and C++ , 1996, Tcl/Tk Workshop.

[6]  Guy L. Steele,et al.  The Java Language Specification , 1996 .

[7]  Fabio Somenzi,et al.  Arithmetic Boolean Expression Manipulator Using BDDs , 1997, Formal Methods Syst. Des..

[8]  Reinhard Wilhelm,et al.  Parametric shape analysis via 3-valued logic , 1999, POPL '99.

[9]  Jørn Lind-Nielsen,et al.  BuDDy : A binary decision diagram package. , 1999 .

[10]  Laurie J. Hendren,et al.  Optimizing Java Bytecode Using the Soot Framework: Is It Feasible? , 2000, CC.

[11]  F. E.,et al.  A Relational Model of Data Large Shared Data Banks , 2000 .

[12]  Claus Brabrand,et al.  The bigwig Project , 2000 .

[13]  M. Moskewicz,et al.  Chaff: engineering an efficient SAT solver , 2001, Proceedings of the 38th Design Automation Conference (IEEE Cat. No.01CH37232).

[14]  Sriram K. Rajamani,et al.  Bebop: a path-sensitive interprocedural dataflow engine , 2001, PASTE '01.

[15]  Rudolf Berghammer,et al.  Implementation of Relational Algebra Using Binary Decision Diagrams , 2001, RelMiCS.

[16]  Richard C. Holt,et al.  Wins and losses of algebraic transformations of software architectures , 2001, Proceedings 16th Annual International Conference on Automated Software Engineering (ASE 2001).

[17]  Roman Manevich,et al.  Compactly Representing First-Order Structures for Static Analysis , 2002, SAS.

[18]  Ondrej Lhoták,et al.  Points-to analysis using BDDs , 2003, PLDI '03.

[19]  Michael R. Clarkson,et al.  Polyglot: An Extensible Compiler Framework for Java , 2003, CC.

[20]  Sharad Malik,et al.  Validating SAT solvers using an independent resolution-based checker: practical implementations and other applications , 2003, 2003 Design, Automation and Test in Europe Conference and Exhibition.

[21]  Wolfram Schulte,et al.  Unifying Tables, Objects and Documents , 2003 .

[22]  Dirk Beyer,et al.  Simple and efficient relational querying of software structures , 2003, 10th Working Conference on Reverse Engineering, 2003. WCRE 2003. Proceedings..

[23]  Jianwen Zhu,et al.  Symbolic pointer analysis revisited , 2004, PLDI '04.

[24]  Xiangyu Zhang,et al.  Efficient forward computation of dynamic slices using reduced ordered binary decision diagrams , 2004, Proceedings. 26th International Conference on Software Engineering.

[25]  Jedd: a BDD-based relational extension of Java , 2004, PLDI.

[26]  Monica S. Lam,et al.  Cloning-based context-sensitive pointer alias analysis using binary decision diagrams , 2004, PLDI '04.

[27]  Ken Friis Larsen,et al.  Incremental execution of transformation specifications , 2004, POPL.