Modular Stacking-based Context-Sensitive Program Analysis

This paper presents a systematic approach to scaling stackingbased context-sensitive program analysis yielded by weighted pushdown systems, and demonstrates its effectiveness by applications to Java pointsto analysis. Our approach relies on the view offormulating stacking-based analysis as AGPs (abstract grammar problem), and reducing the analysis problem to fixed-point calculation over the equation system encoded by grammar productions. To characterize points-to analysis that does not assume an existing program control flow, we propose Contracted AGP, and a symbolic sliding-window based algorithm for it. The algorithm aims at reducing both time and memory costs, and its correctness is proved in terms of chaotic iteration. Finally, we instantiated the algorithm within Japot, a context-sensitive points-to analyzer for Java. Experiments show two-fold benefits of our approach in practice, with (i) scaling Japot to Dacapo benchmark suite, and (ii) a speed-up of 3x faster in average, given an adjustable memory budget.

[1]  Mizuhito Ogawa,et al.  Stacking-Based Context-Sensitive Points-to Analysis for Java , 2009, Haifa Verification Conference.

[2]  Thomas W. Reps,et al.  Improving Pushdown System Model Checking , 2006, CAV.

[3]  Somesh Jha,et al.  Weighted pushdown systems and their application to interprocedural dataflow analysis , 2003, Sci. Comput. Program..

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

[5]  Ondrej Lhoták,et al.  Context-Sensitive Points-to Analysis: Is It Worth It? , 2006, CC.

[6]  Etienne M. Gagnon,et al.  Optimizing Java Byte ode using the SootFramework : Is it Feasible ? , 2000 .

[7]  Amer Diwan,et al.  The DaCapo benchmarks: java benchmarking development and analysis , 2006, OOPSLA '06.

[8]  Krzysztof R. Apt,et al.  The Essence of Constraint Propagation , 1998, Theor. Comput. Sci..

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

[10]  Manu Sridharan,et al.  Demand-driven points-to analysis for Java , 2005, OOPSLA '05.

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

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

[13]  Thomas W. Reps,et al.  Undecidability of context-sensitive data-dependence analysis , 2000, TOPL.

[14]  Stefan Schwoon,et al.  Model checking pushdown systems , 2002 .

[15]  Sarfraz Khurshid,et al.  Context-Sensitive Relevancy Analysis for Efficient Symbolic Execution , 2008, APLAS.

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

[17]  Mizuhito Ogawa,et al.  Conditional weighted pushdown systems and applications , 2010, PEPM '10.

[18]  G. Ramalingam Bounded Incremental Computation , 1996, Lecture Notes in Computer Science.