A Practical Escape and Effect Analysis for Building Lightweight Method Summaries

We present a unification-based, context-sensitive escape and effect analysis that infers lightweight method summaries describing heap effects. The analysis is parameterized on two values: k, indicating the heap depth beyond which objects escape; and b, a branching factor indicating the maximum number of fields per object that the analysis precisely tracks. Restricting these parameters to small values allows us to keep the method summaries lightweight and practical. Results collected from our implementation shows that the analysis scales well to large code bases such as the GNU Classpath libraries. They also show that summaries can help analysis clients approximate the effects of method calls, avoiding expensive inter-procedural computations, or imprecise worst-case assumptions.

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

[2]  Jakob Rehof,et al.  Scalable context-sensitive flow analysis using instantiation constraints , 2000, PLDI '00.

[3]  Martin C. Rinard,et al.  Compositional pointer and escape analysis for Java programs , 1999, OOPSLA '99.

[4]  Oscar Nierstrasz,et al.  Software Engineering - ESEC/FSE '99 , 1999 .

[5]  Monica S. Lam,et al.  Efficient context-sensitive pointer analysis for C programs , 1995, PLDI '95.

[6]  Craig Chambers,et al.  Alias annotations for program understanding , 2002, OOPSLA '02.

[7]  Robert O'Callahan,et al.  Generalized aliasing as a basis for program analysis tools , 2001 .

[8]  Urs Hölzle,et al.  Removing unnecessary synchronization in Java , 1999, OOPSLA '99.

[9]  Martin C. Rinard,et al.  Purity and Side Effect Analysis for Java Programs , 2005, VMCAI.

[10]  Jong-Deok Choi,et al.  Stack allocation and synchronization optimizations for Java using escape analysis , 2003, TOPL.

[11]  Kousha Etessami,et al.  Analysis of Recursive Game Graphs Using Data Flow Equations , 2004, VMCAI.

[12]  Laurie Hendren,et al.  Soot---a java optimization framework , 1999 .

[13]  David Gay,et al.  Fast Escape Analysis and Stack Allocation for Object-Based Programs , 2000, CC.

[14]  Bruno Blanchet,et al.  Escape analysis for JavaTM: Theory and practice , 2003, TOPL.

[15]  Neil D. Jones,et al.  Flow analysis and optimization of LISP-like structures , 1979, POPL.

[16]  Manu Sridharan,et al.  Refinement-based context-sensitive points-to analysis for Java , 2006, PLDI '06.

[17]  Escape Analysis for Java. Theory and Practice , 2003 .

[18]  Sigmund Cherem,et al.  Compile-time deallocation of individual objects , 2006, ISMM '06.

[19]  Sigmund Cherem,et al.  Region analysis and transformation for Java programs , 2004, ISMM '04.

[20]  Vikram S. Adve,et al.  Data Structure Analysis: An Ecien t Context-Sensitive Heap Analysis , 2003 .

[21]  Donglin Liang,et al.  Efficient points-to analysis for whole-program analysis , 1999, ESEC/FSE-7.

[22]  Erik Ruf,et al.  Effective synchronization removal for Java , 2000, PLDI '00.

[23]  David K. Gifford,et al.  Polymorphic effect systems , 1988, POPL '88.

[24]  Michael D. Ernst,et al.  An overview of JML tools and applications , 2003, Electron. Notes Theor. Comput. Sci..

[25]  Barbara G. Ryder,et al.  Parameterized object sensitivity for points-to analysis for Java , 2005, TSEM.