ACM Home Page
Please provide us with feedback. Feedback
Escape analysis for Java
Full text PdfPdf (1.85 MB)
Source Conference on Object Oriented Programming Systems Languages and Applications archive
Proceedings of the 14th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications table of contents
Denver, Colorado, United States
Pages: 1 - 19  
Year of Publication: 1999
ISBN:1-58113-238-7
Also published in ...
Authors
Jong-Deok Choi  IBM T.J. Watson Research Center, P.O. Box 218, Yorktown Heights, NY
Manish Gupta  IBM T.J. Watson Research Center, P.O. Box 218, Yorktown Heights, NY
Mauricio Serrano  IBM T.J. Watson Research Center, P.O. Box 218, Yorktown Heights, NY
Vugranam C. Sreedhar  IBM T.J. Watson Research Center, P.O. Box 218, Yorktown Heights, NY
Sam Midkiff  IBM T.J. Watson Research Center, P.O. Box 218, Yorktown Heights, NY
Sponsor
SIGPLAN: ACM Special Interest Group on Programming Languages
Publisher
ACM  New York, NY, USA
Bibliometrics
Downloads (6 Weeks): 26,   Downloads (12 Months): 182,   Citation Count: 110
Additional Information:

abstract   references   cited by   index terms   collaborative colleagues  

Tools and Actions: Request Permissions Request Permissions    Review this Article  
DOI Bookmark: Use this link to bookmark this Article: http://doi.acm.org/10.1145/320384.320386
What is a DOI?

ABSTRACT

This paper presents a simple and efficient data flow algorithm for escape analysis of objects in Java programs to determine (i) if an object can be allocated on the stack; (ii) if an object is accessed only by a single thread during its lifetime, so that synchronization operations on that object can be removed. We introduce a new program abstraction for escape analysis, the connection graph, that is used to establish reachability relationships between objects and object references. We show that the connection graph can be summarized for each method such that the same summary information may be used effectively in different calling contexts. We present an interprocedural algorithm that uses the above property to efficiently compute the connection graph and identify the non-escaping objects for methods and threads. The experimental results, from a prototype implementation of our framework in the IBM High Performance Compiler for Java, are very promising. The percentage of objects that may be allocated on the stack exceeds 70% of all dynamically created objects in three out of the ten benchmarks (with a median of 19%), 11% to 92% of all lock operations are eliminated in those ten programs (with a median of 51%), and the overall execution time reduction ranges from 2% to 23% (with a median of 7%) on a 333 MHz PowerPC workstation with 128 MB memory.


REFERENCES

Note: OCR errors may be found in this Reference List extracted from the full text article. ACM has opted to expose the complete List rather than only correct and linked references.

 
1
2
3
4
5
6
 
7
8
9
10
 
11
IBM Corporation. IBM High Performance Compiler for Java, 1997. Information available in Web page at http: //simontOl. torolab, ibm. com/hpj/hpj . available for download at http: //www. alphaWorks, ibm. com/formula.
12
13
14
 
15
David Gay and Bjame Steensgaard. Stack allocating objects in Java. Research Report, Microsoft Research, 1999.
16
 
17
 
18
19
 
20
Z. Li and W. Abu-Sufah. On reducing data synchronization in multiprocessed loops. IEEE Transactions on Computers, C-36(1):105-109, January 1987.
 
21
22
 
23
A. Reid, J. McCorquodale, J. Baker, W. Hsieh, and J. Zachary. The need for predictable garbage collection. In WCSSS'99 Workshop on Compiler Support for System Software, March 1999.
24
25

CITED BY  111

Collaborative Colleagues:
Jong-Deok Choi: colleagues
Manish Gupta: colleagues
Mauricio Serrano: colleagues
Vugranam C. Sreedhar: colleagues
Sam Midkiff: colleagues