Efficiently computing static single assignment form and the control dependence graph
ACM Transactions on Programming Languages and Systems (TOPLAS)
Debugging optimized code with dynamic deoptimization
PLDI '92 Proceedings of the ACM SIGPLAN 1992 conference on Programming language design and implementation
Removing unnecessary synchronization in Java
Proceedings of the 14th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Effective synchronization removal for Java
PLDI '00 Proceedings of the ACM SIGPLAN 2000 conference on Programming language design and implementation
Incrementalized pointer and escape analysis
Proceedings of the ACM SIGPLAN 2001 conference on Programming language design and implementation
The Java Language Specification
The Java Language Specification
A Compiler for the Java HotSpotTM Virtual Machine
The School of Niklaus Wirth, "The Art of Simplicity"
Optimization of Object-Oriented Programs Using Static Class Hierarchy Analysis
ECOOP '95 Proceedings of the 9th European Conference on Object-Oriented Programming
Escape analysis for JavaTM: Theory and practice
ACM Transactions on Programming Languages and Systems (TOPLAS)
Stack allocation and synchronization optimizations for Java using escape analysis
ACM Transactions on Programming Languages and Systems (TOPLAS)
Proceedings of the 32nd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Compile-Time Concurrent Marking Write Barrier Removal
Proceedings of the international symposium on Code generation and optimization
Optimized interval splitting in a linear scan register allocator
Proceedings of the 1st ACM/USENIX international conference on Virtual execution environments
Can a shape analysis work at run-time?
JVM'01 Proceedings of the 2001 Symposium on JavaTM Virtual Machine Research and Technology Symposium - Volume 1
Optimized interval splitting in a linear scan register allocator
Proceedings of the 1st ACM/USENIX international conference on Virtual execution environments
A two-phase escape analysis for parallel java programs
Proceedings of the 15th international conference on Parallel architectures and compilation techniques
ACM Transactions on Programming Languages and Systems (TOPLAS)
Run-Time Support for Optimizations Based on Escape Analysis
Proceedings of the International Symposium on Code Generation and Optimization
Automatic feedback-directed object inlining in the java hotspot™ virtual machine
Proceedings of the 3rd international conference on Virtual execution environments
Data layouts for object-oriented programs
Proceedings of the 2007 ACM SIGMETRICS international conference on Measurement and modeling of computer systems
Redundant boxing elimination by a dynamic compiler for Java
Proceedings of the 5th international symposium on Principles and practice of programming in Java
Design of the Java HotSpot™ client compiler for Java 6
ACM Transactions on Architecture and Code Optimization (TACO)
Jolt: lightweight dynamic analysis and removal of object churn
Proceedings of the 23rd ACM SIGPLAN conference on Object-oriented programming systems languages and applications
Dynamic optimization for efficient strong atomicity
Proceedings of the 23rd ACM SIGPLAN conference on Object-oriented programming systems languages and applications
Stack allocation of objects in the CACAO virtual machine
PPPJ '09 Proceedings of the 7th International Conference on Principles and Practice of Programming in Java
Pervasive parallelism for managed runtimes
HotPar'11 Proceedings of the 3rd USENIX conference on Hot topic in parallelism
Automatic object colocation based on read barriers
JMLC'06 Proceedings of the 7th joint conference on Modular Programming Languages
Loop-aware optimizations in PyPy's tracing JIT
Proceedings of the 8th symposium on Dynamic languages
The efficient handling of guards in the design of RPython's tracing JIT
Proceedings of the sixth ACM workshop on Virtual machines and intermediate languages
Storage strategies for collections in dynamically typed languages
Proceedings of the 2013 ACM SIGPLAN international conference on Object oriented programming systems languages & applications
Proceedings of the 2013 ACM international symposium on New ideas, new paradigms, and reflections on programming & software
Partial Escape Analysis and Scalar Replacement for Java
Proceedings of Annual IEEE/ACM International Symposium on Code Generation and Optimization
Hi-index | 0.00 |
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.