Title
Elimination of Java array bounds checks in the presence of indirection
Abstract
SUMMARY The Java language specification states that every access to an array needs to be within the bounds of that array; i.e. between 0 and array length 1. Dierent techniques for dierent programming languages have been proposed to eliminate explicit bounds checks. Some of these techniques are implemented in o-the-shelf Java Virtual Machines (JVMs). The underlying principle of these techniques is that bounds checks can be removed when a JVM/compiler has enough information to guarantee that a sequence of accesses (e.g. inside a for-loop) is safe (within the bounds). Most of the techniques for the elimination of array bounds checks have been developed for programming languages that do not support multi-threading and/or enable dynamic class loading. These two characteristics make most of these techniques unsuitable for Java. Techniques developed specifically for Java have not addressed the elimination of array bounds checks in the presence of indirection, that is, when the index is stored in another array (indirection array). With the objective of optimising applications with array indirection, this paper proposes and evaluates three implementation strategies, each implemented as a Java class. The classes provide the functionality of Java arrays of type int so that objects of the classes can be used instead of indirection arrays. Each strategy enables JVMs, when examining only one of these classes at a time, to obtain enough information to remove array bounds checks. Note: This is a preprint of an article accepted for publication in Concurrency and Computation: Practice & Experience Copyright c 2003 John Wiley & Sons, Ltd. The volume, issue and pages are not known at the moment.
Year
DOI
Venue
2005
10.1145/583810.583819
Concurrency - Practice and Experience
Keywords
Field
DocType
bounds check,array indirection,array bounds check,explicit bounds check,array length,enough information,java array,java class,indirection array,java,off-the-shelf java virtual machines,java language specification state
Dynamic array,Indirection,Programming language,Programming language specification,Computer science,Compiler,Java,Bounds checking,Java virtual machine,Distributed computing
Journal
Volume
Issue
ISBN
17
5-6
1-58113-599-8
Citations 
PageRank 
References 
7
0.88
30
Authors
5
Name
Order
Citations
PageRank
Mikel Luján154046.40
John R. Gurd232353.83
T. L. Freeman38312.72
José Miguel-Alonso4251.61
José Miguel5293.59