A fresh look at optimizing array bound checking
PLDI '90 Proceedings of the ACM SIGPLAN 1990 conference on Programming language design and implementation
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
Optimizing array bound checks using flow analysis
ACM Letters on Programming Languages and Systems (LOPLAS)
Optimizing dynamically-dispatched calls with run-time type feedback
PLDI '94 Proceedings of the ACM SIGPLAN 1994 conference on Programming language design and implementation
Software—Practice & Experience
ABCD: eliminating array bounds checks on demand
PLDI '00 Proceedings of the ACM SIGPLAN 2000 conference on Programming language design and implementation
A Compiler for the Java HotSpotTM Virtual Machine
The School of Niklaus Wirth, "The Art of Simplicity"
Effective Enhancement of Loop Versioning in Java
CC '02 Proceedings of the 11th International Conference on Compiler Construction
A Comprehensive Approach to Array Bounds Check Elimination for Java
CC '02 Proceedings of the 11th International Conference on Compiler Construction
Towards array bound check elimination in Java TM virtual machine language
CASCON '99 Proceedings of the 1999 conference of the Centre for Advanced Studies on Collaborative research
Optimized interval splitting in a linear scan register allocator
Proceedings of the 1st ACM/USENIX international conference on Virtual execution environments
The java hotspotTM server compiler
JVM'01 Proceedings of the 2001 Symposium on JavaTM Virtual Machine Research and Technology Symposium - Volume 1
Automatic array inlining in java virtual machines
Proceedings of the 6th annual IEEE/ACM international symposium on Code generation and optimization
Design of the Java HotSpot™ client compiler for Java 6
ACM Transactions on Architecture and Code Optimization (TACO)
Speculative improvements to verifiable bounds check elimination
Proceedings of the 6th international symposium on Principles and practice of programming in Java
Array bounds check elimination in the context of deoptimization
Science of Computer Programming
SoftBound: highly compatible and complete spatial memory safety for c
Proceedings of the 2009 ACM SIGPLAN conference on Programming language design and implementation
A Verifiable, Control Flow Aware Constraint Analyzer for Bounds Check Elimination
SAS '09 Proceedings of the 16th International Symposium on Static Analysis
CETS: compiler enforced temporal safety for C
Proceedings of the 2010 international symposium on Memory management
SPAF: stateless FSA-based packet filters
IEEE/ACM Transactions on Networking (TON)
Eliminating partially-redundant array-bounds check in the Android Dalvik JIT compiler
Proceedings of the 9th International Conference on Principles and Practice of Programming in Java
HPC in Java: experiences in implementing the NAS parallel benchmarks
AIC'10/BEBI'10 Proceedings of the 10th WSEAS international conference on applied informatics and communications, and 3rd WSEAS international conference on Biomedical electronics and biomedical informatics
Efficient matrix-encoded grammars and low latency parallelization strategies for CYK
IWPT '11 Proceedings of the 12th International Conference on Parsing Technologies
Accelerating Habanero-Java programs with OpenCL generation
Proceedings of the 2013 International Conference on Principles and Practices of Programming on the Java Platform: Virtual Machines, Languages, and Tools
Hi-index | 0.00 |
Whenever an array element is accessed, Java virtual machines execute a compare instruction to ensure that the index value is within the valid bounds. This reduces the execution speed of Java programs. Array bounds check elimination identifies situations in which such checks are redundant and can be removed. We present an array bounds check elimination algorithm for the Java HotSpot™ VM based on static analysis in the just-in-time compiler. The algorithm works on an intermediate representation in static single assignment form and maintains conditions for index expressions. It fully removes bounds checks if it can be proven that they never fail. Whenever possible, it moves bounds checks out of loops. The static number of checks remains the same, but a check inside a loop is likely to be executed more often. If such a check fails, the executing program falls back to interpreted mode, avoiding the problem that an exception is thrown at the wrong place. The evaluation shows a speedup near to the theoretical maximum for the scientific SciMark benchmark suite (40% on average). The algorithm also improves the execution speed for the SPECjvm98 benchmark suite (2% on average, 12% maximum).