A Graph-Free Approach to Data-Flow Analysis

For decades, data-flow analysis (DFA) has been done using an iterative algorithm based on graph representations of programs. For a given data-flow problem, this algorithm computes the maximum fixed point (MFP) solution. The edge structure of the graph represents possible control flows in the program. In this paper, we present a new, graph-free algorithm for computing the MFP solution. The experimental implementation of the algorithm was applied to a large set of samples. The experiments clearly show that the memory usage of our algorithm is much better: Our algorithm always reduces the amount of memory and reached improvements upto less than a tenth. In the average case, the reduction is about a third of the memory usage of the classical algorithm. In addition, the experiments showed that the runtimes are almost the same: The average speedup of the classical algorithm is only marginally greater than one.

[1]  Patrick Cousot,et al.  Introduction to abstract interpretation , 1998 .

[2]  Bernhard Steffen,et al.  Basic-Block Graphs: Living Dinosaurs? , 1998, CC.

[3]  BlanchetBruno Escape analysis for object-oriented languages , 1999 .

[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]  James R. Larus,et al.  Cache-conscious structure definition , 1999, PLDI '99.

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

[7]  Samson Abramsky,et al.  Introduction to Abstract Interpretation , 1987 .

[8]  Markus Mohnen,et al.  Optimising the memory management of higher order functional programs , 1997 .

[9]  Steven S. Muchnick,et al.  Advanced Compiler Design and Implementation , 1997 .

[10]  Liwu Li,et al.  Java Virtual Machine , 1998 .

[11]  Frank Yellin,et al.  The Java Virtual Machine Specification , 1996 .

[12]  Markus Dahm,et al.  Byte Code Engineering , 1999, Java-Informations-Tage.

[13]  James R. Larus,et al.  Cache-conscious structure layout , 1999, PLDI '99.

[14]  Neil D. Jones,et al.  Program Flow Analysis: Theory and Application , 1981 .

[15]  Guy L. Steele,et al.  The Java Language Specification , 1996 .

[16]  Bruno Blanchet,et al.  Escape analysis: correctness proof, implementation and experimental results , 1998, POPL '98.

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