|
ABSTRACT
In object-oriented programming languages, an object is said to escape the method or thread in which it was created if it can also be accessed by other methods or threads. Knowing which objects do not escape allows a compiler to perform aggressive optimizations.This paper presents a new intraprocedural and interprocedural algorithm for escape analysis in the context of dynamic compilation where the compiler has to cope with dynamic class loading and deoptimization. It was implemented for Sun Microsystems' Java HotSpot™ client compiler and operates on an intermediate representation in SSA form. We introduce equi-escape sets for the efficient propagation of escape information between related objects. The analysis is used for scalar replacement of fields and synchronization removal, as well as for stack allocation of objects and fixed-sized arrays. The results of the interprocedural analysis support the compiler in inlining decisions and allow actual parameters to be allocated on the caller stack.Under certain circumstances, the Java HotSpot™ VM is forced to stop executing a method's machine code and transfer control to the interpreter. This is called deoptimization. Since the interpreter does not know about the scalar replacement and synchronization removal performed by the compiler, the deoptimization framework was extended to reallocate and relock objects on demand.
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
|
Jeff Bogda , Urs Hölzle, Removing unnecessary synchronization in Java, Proceedings of the 14th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications, p.35-46, November 01-05, 1999, Denver, Colorado, United States
|
| |
3
|
J. Bogda and A. Singh. Can a shape analysis work at run-time? In Proceedings of the Java Virtual Machine Research and Technology Symposium, Monterey, 2001.
|
 |
4
|
|
 |
5
|
|
| |
6
|
|
| |
7
|
|
| |
8
|
|
| |
9
|
|
| |
10
|
M. Hirzel, A. Diwan, and M. Hind. Pointer analysis in the presence of dynamic class loading. In Proceedings of the European Conference on Object-Oriented Programming, pages 96--122, Oslo, June 2004.
|
 |
11
|
Urs Hölzle , Craig Chambers , David Ungar, Debugging optimized code with dynamic deoptimization, Proceedings of the ACM SIGPLAN 1992 conference on Programming language design and implementation, p.32-43, June 15-19, 1992, San Francisco, California, United States
|
| |
12
|
A. L. Hosking and R. L. Hudson. Remembered sets can also play cards. In Proceedings of the ACM OOPSLA Workshop on Garbage Collection and Memory Management, Washington, D.C., Oct. 1993.
|
| |
13
|
Intel Corporation. IA-32 Intel Architecture Software Developer's Manual, Volume 2A & 2B: Instruction Set Reference, 2004. Order Numbers 253666 and 253667.
|
| |
14
|
A. C. King. Removing GC synchronisation extended version. Technical Report 11-03, Computing Laboratory, University of Kent, Apr. 2003.
|
 |
15
|
Jeremy Manson , William Pugh , Sarita V. Adve, The Java memory model, Proceedings of the 32nd ACM SIGPLAN-SIGACT symposium on Principles of programming languages, p.378-391, January 12-14, 2005, Long Beach, California, USA
|
| |
16
|
H. Mössenböck. Adding static single assignment form and a graph coloring register allocator to the Java Hotspot™ client compiler. Technical Report 15, Johannes Kepler University Linz, Nov. 2000.
|
| |
17
|
|
| |
18
|
R. Pozo and B. Miller. Java SciMark 2.0. http://math.nist.gov/scimark2/.
|
 |
19
|
|
| |
20
|
R. Sedgewick. Algorithms, pages 441--449. Addison-Wesley, second edition, 1988.
|
| |
21
|
Standard Performance Evaluation Corporation. The SPEC JVM98 Benchmarks. http://www.spec.org/jvm98/.
|
| |
22
|
Sun Microsystems, Inc. The Java HotSpot Virtual Machine, v1.4.1, Sept. 2002. http://java.sun.com/products/hotspot/.
|
 |
23
|
|
 |
24
|
|
CITED BY 10
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Thomas Kotzmann , Christian Wimmer , Hanspeter Mössenböck , Thomas Rodriguez , Kenneth Russell , David Cox, Design of the Java HotSpot™ client compiler for Java 6, ACM Transactions on Architecture and Code Optimization (TACO), v.5 n.1, p.1-32, May 2008
|
|
|
|
|
|
|
|
|
|
|