Escape analysis for object-oriented languages
- 1 October 1999
- journal article
- Published by Association for Computing Machinery (ACM) in ACM SIGPLAN Notices
- Vol. 34 (10), 20-34
- https://doi.org/10.1145/320385.320387
Abstract
Escape analysis [27, 14, 5] is a static analysis that determines whether the lifetime of data exceeds its static scope.The main originality of our escape analysis is that it determines precisely the effect of assignments, which is necessary to apply it to object oriented languages with promising results, whereas previous work [27, 14, 5] applied it to functional languages and were very imprecise on assignments. Our implementation analyses the full Java#8482; Language.We have applied our analysis to stack allocation and synchronization elimination. We manage to stack allocate 13% to 95% of data, eliminate more than 20% of synchronizations on most programs (94% and 99% on two examples) and get up to 44% speedup (21% on average). Our detailed experimental study on large programs shows that the improvement comes from the decrease of the garbage collection and allocation times than from improvements on data locality [7], contrary to what happened for ML [5].Keywords
This publication has 21 references indexed in Scilit:
- Reducing garbage in JavaACM SIGPLAN Notices, 1998
- Storage use analysis and its applicationsPublished by Association for Computing Machinery (ACM) ,1996
- Compiler optimizations for improving data localityPublished by Association for Computing Machinery (ACM) ,1994
- Interprocedural may-alias analysis for pointersPublished by Association for Computing Machinery (ACM) ,1994
- The interprocedural analysis and automatic parallelization of Scheme programsHigher-Order and Symbolic Computation, 1989
- Analysis of functional programs to detect run-time garbage cellsACM Transactions on Programming Languages and Systems, 1988
- Lifetime analysis of dynamically allocated objectsPublished by Association for Computing Machinery (ACM) ,1988
- A semantic model of reference counting and its abstraction (detailed summary)Published by Association for Computing Machinery (ACM) ,1986
- A flexible approach to interprocedural data flow analysis and programs with recursive data structuresPublished by Association for Computing Machinery (ACM) ,1982
- Abstract interpretation: a unified lattice model for static analysis of programs by construction or approximation of fixpointsPublished by Association for Computing Machinery (ACM) ,1977