Side-effect analysis with fast escape filter

Side-effect analysis is a fundamental static analysis used to determine the memory locations modified or used by each program entity. For the programs with pointers, the analysis can be very imprecise. To improve the precision of side-effect analysis, many approaches design more elaborate background pointer analyses in order to obtain smaller side-effect sets, but very few approaches consider to achieve better precisions by refining the side-effect analysis algorithms themselves. To address the problem, this paper presents a new side-effect analysis approach that uses Gay and Steensgaard's fast escape analysis to filter superfluous side-effects. The approach does not need to modify the background pointer analysis and can filter side-effects in the intraprocedural level and the interprocedural level. The experimental results show that it can effectively improve the analysis precision within a short extra time.

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

[2]  Cliff Click,et al.  Global code motion/global value numbering , 1995, PLDI '95.

[3]  Alexander Aiken,et al.  Effective static race detection for Java , 2006, PLDI '06.

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

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

[6]  Welf Löwe,et al.  Parallel Reachability and Escape Analyses , 2010, 2010 10th IEEE Working Conference on Source Code Analysis and Manipulation.

[7]  Baowen Xu,et al.  Interstatement must aliases for data dependence analysis of heap locations , 2007, PASTE '07.

[8]  Jingling Xue,et al.  Interprocedural side-effect analysis for incomplete object-oriented software modules , 2007, J. Syst. Softw..

[9]  Barbara G. Ryder,et al.  A schema for interprocedural modification side-effect analysis with pointer aliasing , 2001, TOPL.

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

[11]  Lars Clausen A Java bytecode optimizer using side‐effect analysis , 1997 .

[12]  Yuming Zhou,et al.  Improving Side-Effect Analysis with Lazy Access Path Resolving , 2009, 2009 Ninth IEEE International Working Conference on Source Code Analysis and Manipulation.

[13]  Helmut Seidl,et al.  Side-Effect Analysis of Assembly Code , 2011, SAS.

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

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

[16]  Michael Franz,et al.  Efficiently Verifiable Escape Analysis , 2004, ECOOP.

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

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

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

[20]  Ken Kennedy,et al.  Interprocedural side-effect analysis in linear time , 1988, PLDI '88.

[21]  Samuel P. Midkiff,et al.  Practical escape analyses: how good are they? , 2007, VEE '07.

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

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

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

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

[26]  Lars Ræder Clausen A Java Bytecode Optimizer Using Side-Effect Analysis , 1997, Concurr. Pract. Exp..

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

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

[29]  Ondrej Lhoták,et al.  Using Inter-Procedural Side-Effect Information in JIT Optimizations , 2005, CC.