Debugging optimized code with dynamic deoptimization
PLDI '92 Proceedings of the ACM SIGPLAN 1992 conference on Programming language design and implementation
Garbage collection: algorithms for automatic dynamic memory management
Garbage collection: algorithms for automatic dynamic memory management
Automatic inline allocation of objects
Proceedings of the ACM SIGPLAN 1997 conference on Programming language design and implementation
Using generational garbage collection to implement cache-conscious data placement
Proceedings of the 1st international symposium on Memory management
An evaluation of automatic object inline allocation techniques
Proceedings of the 13th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
ABCD: eliminating array bounds checks on demand
PLDI '00 Proceedings of the ACM SIGPLAN 2000 conference on Programming language design and implementation
Field analysis: getting useful and low-cost interprocedural information
PLDI '00 Proceedings of the ACM SIGPLAN 2000 conference on Programming language design and implementation
An automatic object inlining optimization and its evaluation
PLDI '00 Proceedings of the ACM SIGPLAN 2000 conference on Programming language design and implementation
Pointer analysis: haven't we solved this problem yet?
PASTE '01 Proceedings of the 2001 ACM SIGPLAN-SIGSOFT workshop on Program analysis for software tools and engineering
Instance-wise points-to analysis for loop-based dependence testing
ICS '02 Proceedings of the 16th international conference on Supercomputing
Java Virtual Machine Specification
Java Virtual Machine Specification
Creating and preserving locality of java applications at allocation and garbage collection times
OOPSLA '02 Proceedings of the 17th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
A Compiler for the Java HotSpotTM Virtual Machine
The School of Niklaus Wirth, "The Art of Simplicity"
A Comprehensive Approach to Array Bounds Check Elimination for Java
CC '02 Proceedings of the 11th International Conference on Compiler Construction
The garbage collection advantage: improving program locality
OOPSLA '04 Proceedings of the 19th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Object combining: a new aggressive optimization for object intensive programs: Research Articles
Concurrency and Computation: Practice & Experience - 2002 ACM Java Grande—ISCOPE Conference Part I
Run-time evaluation of opportunities for object inlining in Java: Research Articles
Concurrency and Computation: Practice & Experience - 2002 ACM Java Grande—ISCOPE Conference Part I
The DaCapo benchmarks: java benchmarking development and analysis
Proceedings of the 21st annual ACM SIGPLAN conference on Object-oriented programming systems, languages, and applications
Automatic feedback-directed object inlining in the java hotspot™ virtual machine
Proceedings of the 3rd international conference on Virtual execution environments
Array bounds check elimination for the Java HotSpot™ client compiler
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)
Automatic object colocation based on read barriers
JMLC'06 Proceedings of the 7th joint conference on Modular Programming Languages
Optimized strings for the Java HotSpot™ virtual machine
Proceedings of the 6th international symposium on Principles and practice of programming in Java
Compact and efficient strings for Java
Science of Computer Programming
Automatic feedback-directed object fusing
ACM Transactions on Architecture and Code Optimization (TACO)
Refactoring techniques for aggressive object inlining in Java applications
Automated Software Engineering
Hi-index | 0.00 |
Array inlining expands the concepts of object inlining to arrays. Groups of objects and arrays that reference each other are placed consecutively in memory so that their relative offsets are fixed, i.e. they are colocated. This allows memory loads to be replaced by address arithmetic, which reduces the costs of field and array accesses. We implemented this optimization for Sun Microsystems' Java HotSpot VM. The optimization is performed automatically and requires no actions on the part of the programmer. Arrays are frequently used for the implementation of dynamic data structures. Therefore, the length of arrays often varies, and fields referencing such arrays have to be changed whenever the array is reallocated. We present an efficient code pattern that detects these changes and allows the optimized access of such array fields. It is integrated into the array bounds check. We also claim that inlining array element objects into an array is not possible without a global data flow analysis. The evaluation shows that our dynamic approach can optimize frequently accessed fields with a reasonable low compilation and analysis overhead. The peak performance of SPECjvm98 is improved by 10% on average, with a maximum of 25%.