Compilers: principles, techniques, and tools
Compilers: principles, techniques, and tools
An optimizer for Ada - design, experiences and results
PLDI '88 Proceedings of the ACM SIGPLAN 1988 conference on Programming Language design and Implementation
Run-time parallelization and scheduling of loops
SPAA '89 Proceedings of the first annual ACM symposium on Parallel algorithms and architectures
A fresh look at optimizing array bound checking
PLDI '90 Proceedings of the ACM SIGPLAN 1990 conference on Programming language design and implementation
Numerical recipes in FORTRAN (2nd ed.): the art of scientific computing
Numerical recipes in FORTRAN (2nd ed.): the art of scientific computing
Optimization of array subscript range checks
ACM Letters on Programming Languages and Systems (LOPLAS)
Optimizing array bound checks using flow analysis
ACM Letters on Programming Languages and Systems (LOPLAS)
Elimination of redundant array subscript range checks
PLDI '95 Proceedings of the ACM SIGPLAN 1995 conference on Programming language design and implementation
Applied cryptography (2nd ed.): protocols, algorithms, and source code in C
Applied cryptography (2nd ed.): protocols, algorithms, and source code in C
An Implementation Framework for HPF Distributed Arrays on Message-Passing Parallel Computer Systems
IEEE Transactions on Parallel and Distributed Systems
Automatic discovery of linear restraints among variables of a program
POPL '78 Proceedings of the 5th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
Automating proofs of the absence of common runtime errors
POPL '78 Proceedings of the 5th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
POPL '77 Proceedings of the 4th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
Loop Transformations for Restructuring Compilers: The Foundations
Loop Transformations for Restructuring Compilers: The Foundations
The Java Language Specification
The Java Language Specification
Optimization of range checking
SIGPLAN '82 Proceedings of the 1982 SIGPLAN symposium on Compiler construction
Object serialization for marshalling data in a Java interface to MPI
JAVA '99 Proceedings of the ACM 1999 conference on Java Grande
The Jalapeño dynamic optimizing compiler for Java
JAVA '99 Proceedings of the ACM 1999 conference on Java Grande
High performance computing with the Array package for Java: a case study using data mining
SC '99 Proceedings of the 1999 ACM/IEEE conference on Supercomputing
Automatic loop transformations and parallelization for Java
Proceedings of the 14th international conference on Supercomputing
Compiling object-oriented data intensive applications
Proceedings of the 14th international conference on Supercomputing
From flop to megaflops: Java for technical computing
ACM Transactions on Programming Languages and Systems (TOPLAS)
ABCD: eliminating array bounds checks on demand
PLDI '00 Proceedings of the ACM SIGPLAN 2000 conference on Programming language design and implementation
Elimination of Java array bounds checks in the presence of indirection
JGI '02 Proceedings of the 2002 joint ACM-ISCOPE conference on Java Grande
Data parallel language and compiler support for data intensive applications
Parallel Computing - Parallel data-intensive algorithms and applications
From Flop to MegaFlops: Java for Technical Computing
LCPC '98 Proceedings of the 11th International Workshop on Languages and Compilers for Parallel Computing
High Performance Numerical Computing in Java: Language and Compiler Issues
LCPC '99 Proceedings of the 12th International Workshop on Languages and Compilers for Parallel Computing
Deriving Pre-conditions for Array Bound Check Elimination
PADO '01 Proceedings of the Second Symposium on Programs as Data Objects
A Framework for Optimizing Java Using Attributes
CC '01 Proceedings of the 10th International Conference on Compiler Construction
A framework for optimizing Java using attributes
CASCON '00 Proceedings of the 2000 conference of the Centre for Advanced Studies on Collaborative research
Java programming for high-performance numerical computing
IBM Systems Journal
IBM Systems Journal
Efficient and effective array bound checking
ACM Transactions on Programming Languages and Systems (TOPLAS)
Implicit array bounds checking on 64-bit architectures
ACM Transactions on Architecture and Code Optimization (TACO)
Proceedings of the twenty-second IEEE/ACM international conference on Automated software engineering
Monitor optimization via stutter-equivalent loop transformation
Proceedings of the ACM international conference on Object oriented programming systems languages and applications
A framework for optimizing Java using attributes
CASCON First Decade High Impact Papers
SOS: saving time in dynamic race detection with stationary analysis
Proceedings of the 2011 ACM international conference on Object oriented programming systems languages and applications
Hi-index | 0.00 |
The JavaTM language specification requires that all array references be checked for validity. If a reference is invalid, an exception must be thrown. Furthermore, the environment at the time of the exception must be preserved and made available to whatever code handles the exception. Performing the checks at run time incurs a large penalty in execution time. In this paper we describe a collection of transformations that can dramatically reduce this overhead in the common case (when the access is valid) while preserving the program state at the time of an exception. The transformations allow trade-offs to be made in the efficiency and size of the resulting code, and are fully compliant with the Java language semantics. Preliminary evaluation of the effectiveness of these transformations shows that performance improvements of 10 times and more can be achieved for array-intensive Java programs.