|
ABSTRACT
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. Different techniques for different programming languages have been proposed to eliminate explicit bounds checks. Some of these techniques are implemented in off-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 tech niques 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.
REFERENCES
Note: OCR errors may be found in this Reference List extracted from the full text article. ACM has opted to expose the complete List rather than only correct and linked references.
 |
1
|
|
| |
2
|
B. Alpern , C. R. Attanasio , J. J. Barton , M. G. Burke , P. Cheng , J.-D. Choi , A. Cocchi , S. J. Fink , D. Grove , M. Hind , S. F. Hummel , D. Lieber , V. Litvinov , M. F. Mergen , T. Ngo , J. R. Russell , V. Sarkar , M. J. Serrano , J. C. Shepherd , S. E. Smith , V. C. Sreedhar , H. Srinivasan , J. Whaley, The Jalapeño virtual machine, IBM Systems Journal, v.39 n.1, p.211-238, January 2000
|
 |
3
|
|
 |
4
|
Bruno Blanchet, Escape analysis for object-oriented languages: application to Java, Proceedings of the 14th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications, p.20-34, November 01-05, 1999, Denver, Colorado, United States
|
 |
5
|
Rastislav Bodík , Rajiv Gupta , Vivek Sarkar, ABCD: eliminating array bounds checks on demand, Proceedings of the ACM SIGPLAN 2000 conference on Programming language design and implementation, p.321-333, June 18-21, 2000, Vancouver, British Columbia, Canada
|
 |
6
|
Jeff Bogda , Urs Hölzle, Removing unnecessary synchronization in Java, Proceedings of the 14th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications, p.35-46, November 01-05, 1999, Denver, Colorado, United States
|
| |
7
|
|
| |
8
|
Ronald F. Boisvert , Roldan Pozo , Karin Remington , Richard F. Barrett , Jack J. Dongarra, Matrix market: a web resource for test matrix collections, Proceedings of the IFIP TC2/WG2.5 working conference on Quality of numerical software: assessment and enhancement, p.125-137, January 1997, Oxford, United Kingdom
|
 |
9
|
J. M. Bull , L. A. Smith , L. Pottage , R. Freeman, Benchmarking Java against C and Fortran for scientific applications, Proceedings of the 2001 joint ACM-ISCOPE conference on Java Grande, p.97-105, June 2001, Palo Alto, California, United States
[doi> 10.1145/376656.376823]
|
 |
10
|
|
 |
11
|
Jong-Deok Choi , Manish Gupta , Mauricio Serrano , Vugranam C. Sreedhar , Sam Midkiff, Escape analysis for Java, Proceedings of the 14th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications, p.1-19, November 01-05, 1999, Denver, Colorado, United States
|
 |
12
|
Michał Cierniak , Guei-Yuan Lueh , James M. Stichnoth, Practicing JUDO: Java under dynamic optimizations, Proceedings of the ACM SIGPLAN 2000 conference on Programming language design and implementation, p.13-26, June 18-21, 2000, Vancouver, British Columbia, Canada
|
| |
13
|
|
 |
14
|
Sanjay Ghemawat , Keith H. Randall , Daniel J. Scales, Field analysis: getting useful and low-cost interprocedural information, Proceedings of the ACM SIGPLAN 2000 conference on Programming language design and implementation, p.334-344, June 18-21, 2000, Vancouver, British Columbia, Canada
|
| |
15
|
G. H. Golub and C. F. van Loan. Matrix Computations. John Hopkins University Press, 3rd edition, 1996.
|
 |
16
|
|
 |
17
|
|
| |
18
|
Java Grande Forum. Making Java Work for High-End Computing, November 1998. Available at http://www.javagrande.org/reports.htm.
|
| |
19
|
Java Grande Forum. Interim Java Grande Forum Report, June 1999. Available at http://www.javagrande.org/reports.htm.
|
| |
20
|
|
| |
21
|
Multiarray package. http://jcp.org/jsr/detail/083.jsp.
|
 |
22
|
|
 |
23
|
|
 |
24
|
Mikel Luján , T. L. Freeman , John R. Gurd, OoLALA: an object oriented analysis and design of numerical linear algebra, Proceedings of the 15th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications, p.229-252, October 2000, Minneapolis, Minnesota, United States
|
| |
25
|
M. Luján, J. R. Gurd, and T. L. Freeman. OoLaLa: Transformations for implementations of matrix operations at high abstraction levels. In Proceedings of the 4th Workshop on Parallel Object-Oriented Scientific Computing -- POOSC'01, 2001.
|
 |
26
|
Victoria Markstein , John Cocke , Peter Markstein, Optimization of range checking, Proceedings of the 1982 SIGPLAN symposium on Compiler construction, p.114-119, June 23-25, 1982, Boston, Massachusetts, United States
|
| |
27
|
|
| |
28
|
|
| |
29
|
J. E. Moreira, S. P. Midki, and M. Gupta. A standard Java array package for technical computing. In Proceedings of the Ninth SIAM Conference on Parallel Processing for Scientific Computing, 1999.
|
 |
30
|
|
| |
31
|
J. E. Moreira , S. P. Midkiff , M. Gupta , P. V. Artigas , M. Snir , R. D. Lawrence, Java programming for high-performance numerical computing, IBM Systems Journal, v.39 n.1, p.21-56, January 2000
|
 |
32
|
José E. Moreira , Samuel P. Midkiff , Manish Gupta , Pedro V. Artigas , Peng Wu , George Almasi, The NINJA project, Communications of the ACM, v.44 n.10, p.102-109, Oct. 2001
[doi> 10.1145/383845.383867]
|
 |
33
|
|
| |
34
|
M. Paleczny, C. Vick, and C. Click. The Java Hotspot server compiler. In Proceedings of the USENIX Symposium on Java Virtual Machine Research and Technology, 2001.
|
 |
35
|
Radu Rugina , Martin Rinard, Symbolic bounds analysis of pointers, array indices, and accessed memory regions, Proceedings of the ACM SIGPLAN 2000 conference on Programming language design and implementation, p.182-195, June 18-21, 2000, Vancouver, British Columbia, Canada
|
 |
36
|
Mauricio Serrano , Rajesh Bordawekar , Sam Midkiff , Manish Gupta, Quicksilver: a quasi-static compiler for Java, Proceedings of the 15th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications, p.66-82, October 2000, Minneapolis, Minnesota, United States
|
| |
37
|
T. Suganuma , T. Ogasawara , M. Takeuchi , T. Yasue , M. Kawahito , K. Ishizaki , H. Komatsu , T. Nakatani, Overview of the IBM Java just-in-time compiler, IBM Systems Journal, v.39 n.1, p.175-193, January 2000
|
 |
38
|
|
| |
39
|
George K. Thiruvathukal, Java at Middle Age: Enabling Java for Computational Science, Computing in Science and Engineering, v.4 n.1, p.74-84, January 2002
|
 |
40
|
John Whaley , Martin Rinard, Compositional pointer and escape analysis for Java programs, Proceedings of the 14th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications, p.187-206, November 01-05, 1999, Denver, Colorado, United States
|
| |
41
|
P. Wu, S. P. Midki, J. E. Moreira, and M. Gupta. Improving Java performance through semantic inlining. Technical Report 21313, IBM Research Division, 1998.
|
 |
42
|
|
 |
43
|
Zhichen Xu , Barton P. Miller , Thomas Reps, Safety checking of machine code, Proceedings of the ACM SIGPLAN 2000 conference on Programming language design and implementation, p.70-82, June 18-21, 2000, Vancouver, British Columbia, Canada
|
CITED BY 2
|
|
Sudarshan M. Srinivasan , Srikanth Kandula , Christopher R. Andrews , Yuanyuan Zhou, Flashback: a lightweight extension for rollback and deterministic replay for software debugging, Proceedings of the USENIX Annual Technical Conference 2004 on USENIX Annual Technical Conference, p.3-3, June 27-July 02, 2004, Boston, MA
|
|
|
|
|