Dimensions of Precision in Reference Analysis of Object-Oriented Programming Languages

There has been approximately a ten year history of reference analyses for object-oriented programming languages. Approaches vary as to how different analyses account for program execution flow, how they capture calling context, and how they model objects, reference variables and the possible calling structure of the program. A taxonomy of analysis dimensions that affect precision (and cost) will be presented and illustrated by examples of existing reference analysis techniques.

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

[2]  Laurie J. Hendren,et al.  Practical virtual method call resolution for Java , 2000, OOPSLA '00.

[3]  Lori L. Pollock,et al.  OMEN: A strategy for testing object-oriented software , 2000, ISSTA '00.

[4]  Patrick Cousot,et al.  Abstract interpretation: a unified lattice model for static analysis of programs by construction or approximation of fixpoints , 1977, POPL.

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

[6]  Alfred V. Aho,et al.  Compilers: Principles, Techniques, and Tools , 1986, Addison-Wesley series in computer science / World student series edition.

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

[8]  Jong-Deok Choi,et al.  Efficient and precise modeling of exceptions for the analysis of Java programs , 1999, PASTE '99.

[9]  Monica S. Lam,et al.  An Efficient Inclusion-Based Points-To Analysis for Strictly-Typed Languages , 2002, SAS.

[10]  Jens Palsberg,et al.  Type-based analysis and applications , 2001, PASTE '01.

[11]  Alexander Aiken,et al.  Projection merging: reducing redundancies in inclusion constraint graphs , 2000, POPL '00.

[12]  Saurabh Sinha,et al.  Analysis of programs with exception-handling constructs , 1998, Proceedings. International Conference on Software Maintenance (Cat. No. 98CB36272).

[13]  Jong-Deok Choi,et al.  A framework for interprocedural optimization in the presence of dynamic class loading , 2000, PLDI '00.

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

[15]  Susan Horwitz,et al.  Fast and accurate flow-insensitive points-to analysis , 1997, POPL '97.

[16]  Erik Ruf,et al.  Context-insensitive alias analysis reconsidered , 1995, PLDI '95.

[17]  Barbara G. Ryder,et al.  Points-to analysis for Java using annotated constraints , 2001, OOPSLA '01.

[18]  Bjarne Steensgaard,et al.  Points-to analysis in almost linear time , 1996, POPL '96.

[19]  Bruno Blanchet,et al.  Escape analysis for object-oriented languages: application to Java , 1999, OOPSLA '99.

[20]  Amer Diwan,et al.  Simple and effective analysis of statically-typed object-oriented programs , 1996, OOPSLA '96.

[21]  Jong-Deok Choi,et al.  Escape analysis for Java , 1999, OOPSLA '99.

[22]  Manuvir Das,et al.  Unification-based pointer analysis with directional assignments , 2000, PLDI '00.

[23]  Barbara G. Ryder,et al.  Parameterized object sensitivity for points-to and side-effect analyses for Java , 2002, ISSTA '02.

[24]  Barbara G. Ryder,et al.  Fragment class analysis for testing of polymorphism in Java software , 2004, IEEE Transactions on Software Engineering.

[25]  Ole Agesen The Cartesian Product Algorithm: Simple and Precise Type Inference Of Parametric Polymorphism , 1995, ECOOP.

[26]  Donglin Liang,et al.  Evaluating the precision of static reference analysis using profiling , 2002, ISSTA '02.

[27]  J. Moss,et al.  Simple and E ective Analysis ofStatically-Typed Object-Oriented ProgramsAmer , 1996 .

[28]  Jens Palsberg,et al.  Making Type Inference Practical , 1992, ECOOP.

[29]  Barbara G. Ryder,et al.  Properties of data flow frameworks , 1990, Acta Informatica.

[30]  Michael Hind,et al.  Pointer analysis: haven't we solved this problem yet? , 2001, PASTE '01.

[31]  Barbara G. Ryder,et al.  Data-flow-based Testing of Object-Oriented Libraries , 1999 .

[32]  Jens Palsberg,et al.  Object-oriented type inference , 1991, OOPSLA 1991.

[33]  Donglin Liang,et al.  Extending and evaluating flow-insenstitive and context-insensitive points-to analyses for Java , 2001, PASTE '01.

[34]  Barbara G. Ryder,et al.  Modular data-flow analysis of statically typed object-oriented programming languages , 2000 .

[35]  Frank Tip,et al.  Extracting library-based object-oriented applications , 2000, SIGSOFT '00/FSE-8.

[36]  Lars Ole Andersen,et al.  Program Analysis and Specialization for the C Programming Language , 2005 .

[37]  David Grove,et al.  Optimization of Object-Oriented Programs Using Static Class Hierarchy Analysis , 1995, ECOOP.

[38]  Chrislain Razafimahefa A Study Of Side-Effect Analyses For Java , 1999 .

[39]  Matthew S. Hecht,et al.  Flow Analysis of Computer Programs , 1977 .

[40]  David F. Bacon,et al.  Fast static analysis of C++ virtual function calls , 1996, OOPSLA '96.

[41]  Alexander Aiken,et al.  Polymorphic versus Monomorphic Flow-Insensitive Points-to Analysis for C , 2000, SAS.

[42]  Alexander Aiken,et al.  Partial online cycle elimination in inclusion constraint graphs , 1998, PLDI.

[43]  Olivier Tardieu,et al.  Ultra-fast aliasing analysis using CLA: a million lines of C code in a second , 2001, PLDI '01.

[44]  Barbara G. Ryder,et al.  Relevant context inference , 1999, POPL '99.

[45]  Saurabh Sinha,et al.  Control-Flow Analysis of Programs with Exception-Handling Constructs , 1998 .

[46]  Andrew A. Chien,et al.  Precise Concrete Type Inference for Object-Oriented Languages , 1994, OOPSLA.

[47]  Jens Palsberg,et al.  Scalable propagation-based call graph construction algorithms , 2000, OOPSLA '00.

[48]  David Grove,et al.  A framework for call graph construction algorithms , 2001, TOPL.

[49]  Olin Shivers,et al.  Control-flow analysis of higher-order languages of taming lambda , 1991 .