IDE Dataflow Analysis in the Presence of Large Object-Oriented Libraries

A key scalability challenge for interprocedural dataflow analysis comes from large libraries. Our work addresses this challenge for the general category of interprocedural distributive environment (IDE) dataflow problems. Using pre-computed library summary information, the proposed approach reduces significantly the cost of whole-program IDE analyses without any loss of precision. We define an approach for library summary generation by using a graph representation of dataflow summary functions, and by abstracting away redundant dataflow facts that are internal to the library. Our approach also handles object-oriented features, by employing an IDE type analysis as well as special handling of polymorphic library call sites whose target methods depend on the future (unknown) client code. Experimental results show that dramatic cost savings can be achieved with the help of these techniques.

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

[2]  Atanas Rountev,et al.  Static analyses for java in the presence of distributed components and large libraries , 2007 .

[3]  Barbara G. Ryder,et al.  Points-to and Side-Effect Analyses for Programs Built with Precompiled Libraries , 2001, CC.

[4]  Calvin Lin,et al.  Optimizing the Use of High Performance Software Libraries , 2000, LCPC.

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

[6]  Jingling Xue,et al.  Completeness Analysis for Incomplete Object-Oriented Programs , 2005, CC.

[7]  Frank Tip,et al.  Practical extraction techniques for Java , 2002, TOPL.

[8]  Martin C. Rinard,et al.  Design-Driven Compilation , 2001, CC.

[9]  David W. Binkley,et al.  Interprocedural slicing using dependence graphs , 1988, SIGP.

[10]  Ondrej Lhoták,et al.  Scaling Java Points-to Analysis Using SPARK , 2003, CC.

[11]  Nevin Charles Heintze,et al.  Set based program analysis , 1992 .

[12]  O. Lehrmann Madsen,et al.  ECOOP ’92 European Conference on Object-Oriented Programming , 1992, Lecture Notes in Computer Science.

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

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

[15]  Thomas Reps,et al.  Interprocedural Dataflow Analysis via Graph Reachability , 2008 .

[16]  Atanas Rountev,et al.  Interprocedural Dataflow Analysis in the Presence of Large Libraries , 2006, CC.

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

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

[19]  Donglin Liang,et al.  Efficient Computation of Parameterized Pointer Information for Interprocedural Analyses , 2001, SAS.

[20]  Eran Yahav,et al.  Generating precise and concise procedure summaries , 2008, POPL '08.

[21]  Patrick Cousot,et al.  Modular Static Program Analysis , 2002, CC.

[22]  Roberto Giacobazzi,et al.  Compositional analysis of modular logic programs , 1993, POPL '93.

[23]  Thomas W. Reps,et al.  Precise Interprocedural Dataflow Analysis with Applications to Constant Propagation , 1995, TAPSOFT.

[24]  Matthias Felleisen,et al.  Componential set-based analysis , 1997, TOPL.

[25]  Frédéric Vivien,et al.  Incrementalized pointer and escape analysis , 2001, PLDI '01.

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

[27]  Matthew B. Dwyer Modular flow analysis for concurrent software , 1997, Proceedings 12th IEEE International Conference Automated Software Engineering.

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

[29]  Sigmund Cherem,et al.  A Practical Escape and Effect Analysis for Building Lightweight Method Summaries , 2007, CC.

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

[31]  Wen-mei W. Hwu,et al.  Modular interprocedural pointer analysis using access paths: design, implementation, and evaluation , 2000, PLDI '00.

[32]  Atanas Rountev,et al.  Precise identification of side-effect-free methods in Java , 2004, 20th IEEE International Conference on Software Maintenance, 2004. Proceedings..

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

[34]  Keith H. Randall,et al.  Field analysis: getting useful and low-cost interprocedural information , 2000, PLDI '00.

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

[36]  Barbara G. Ryder,et al.  Data-flow analysis of program fragments , 1999, ESEC/FSE-7.

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

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

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

[40]  Easwaran Raman,et al.  A framework for unrestricted whole-program optimization , 2006, PLDI '06.

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

[42]  Thomas W. Reps,et al.  Precise interprocedural dataflow analysis via graph reachability , 1995, POPL '95.

[43]  Atanas Rountev,et al.  Object naming analysis for reverse-engineered sequence diagrams , 2005, ICSE.

[44]  Gregg Rothermel,et al.  Separate Computation of Alias Information for Reuse , 1996, IEEE Trans. Software Eng..

[45]  David Callahan,et al.  The program summary graph and flow-sensitive interprocedual data flow analysis , 1988, PLDI '88.