Abstract
Run-time exception checking is required by the Java Language Specification (JLS). Though providing higher software reliability, that mechanism negatively affects performance of Java programs, especially those computationally intensive. This paper pursues loop versioning, a simple program transformation which often helps to avoid the checking overhead. Basing upon the Java Memory Model precisely defined in JLS, the work proposes a set of sufficient conditions for applicability of loopv ersioning. Scalable intra- and interprocedural analyses that efficiently check fulfilment of the conditions are also described. Implemented in Excelsior JET, an ahead-of-time compiler for Java, the developed technique results in significant performance improvements on some computational benchmarks.
Writes to an array of a reference type may also require type inclusion check
Chapter PDF
Similar content being viewed by others
References
Steven S. Muchnik. Advanced Compiler Design And Implementation. Morgan Kaufmann Publishers, 1997.
J. Gosling, B. Joy and G. Steele. The Java(tm) Language Specification, Second Edition. Addison-Wesley, Reading, 2000.
T. Lindholm, F. Yellin, B. Joy, K. Walrath. The Java Virtual Machine Specification. Addison-Wesley, 1996.
The Java HotSpot(tm) Virtual Machine, Technical Whitepaper, Sun Microsystems Inc., 2001. URL: http://www.sun.com/solaris/java/wp-hotspot
Suganuma et al. Overview of the IBM Java Just-In-time Compiler, IBM Systems Journal, Vol. 39, No. 1, 2000.
V. Mikheev. Design of Multilingual Retargetable Compilers: Experience of the XDS Framework Evolution. In Proc. of Joint Modular Languages Conference, JMLC’2000, Volume 1897 of LNCS, Springer-Verlag, 2000.
V. Mikheev, S. Fedoseev. Compiler-Cooperative Memory Management in Java. To appear in Proc. of 4th International Conference Perspectives of System Informatics, PSI’2001, LNCS, Springer-Verlag, 2001.
M. Byler et al. Multiple version loops. In Proc. of the 1987 International Conference on Parellel Processing, 1987.
R. Fitzgerald, T. Knoblock, E. Ruf, B. Steensgaard, D. Tarditi. Marmot: an Optimizing Compiler for Java, Microsoft Research, MSF-TR-99-33, 1999.
V. Seshadri. IBM high performance compiler for Java. AIXpert Magazine, September 1997.
P. Artigas, M. Gupta, S. Midki. and J. Moreira. Automatic Loop Transformations and Parallelization for Java, In Proc. International Conference on Supercomputing, ICS’00, 2000.
D. Bodik, R. Gupta, and V. Sarkar. ABCD: Eliminating Array Bounds Checks on Demand. In Proceeding of PLDI’00, 2000.
P. Pomminvillen et al. A Framework for Optimizing Java Attributes. In Proc. Compiler Construction, CC’2001, Volume 2027 of LNCS, Springer-Verlag, 2001.
M. Arnold, S. Fink, V. Sarkar, and P. Sweeney. A Comparative Study of Static and Profile-Based Heuristics for Inlining. In Proc. of ACM SIGPLAN 2000 Workshop on Dynamic and Adaptive Compilation and Optimization, DYNAMO’00, 2000.
W. Pugh. Fixing the Java Memory Model. In ACM 1999 Java Grande Conference, San Francisco, CA, June 1999.
M. Franz, Th. Kistler. Slim binaries. Technical report 96-24, Department of Information and Computer Science, UC Irvine, 1996.
J. Moreira, S. Midki., M. Gupta. A comparison of three approaches to language, compiler, and library support for multidimensional arrays in Java. In Proc. Of ISCOPE Conference on ACM 2001 Java Grande, 2001.
C. Cifuentes. Structuring Decompiled Graphs. In Proc. of the International Conference on Compiler Construction, CC’96. Volume 1060 of LNCS, Springer-Verlag, 1996.
U. Lichtblau. Decompilation of control structures by means of graph transformations. In Proc. of the International Joint Conference on Theory and Practice of Software Development, TAPSOFT’85. Volume 185 of LNCS, Springer-Verlag, 1985.
The Java Grande Forum Sequential Benchmarks, Version 2.0. URL: http://www.epcc.ed.ac.uk/javagrande/sequential.html
SciMark 2.0. Java benchmark for scientific and numerical computing. URL: http://math.nist.gov/scimark2/
O. P. Doederlein. The Java Performance Report-Part IV: Static Compilers, and More. JavaLobby, August, 2001 URL: http://www.javalobby.org/fr/html/frm/javalobby/features/jpr/part4.html
Excelsior JET. Technical Whitepaper, Excelsior LLC, 2001. URL: http://www.excelsior-usa.com/jetwp.html
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2002 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Mikheev, V.V., Fedoseev, S.A., Sukharev, V.V., Lipsky, N.V. (2002). Effective Enhancement of Loop Versioning in Java. In: Horspool, R.N. (eds) Compiler Construction. CC 2002. Lecture Notes in Computer Science, vol 2304. Springer, Berlin, Heidelberg. https://doi.org/10.1007/3-540-45937-5_21
Download citation
DOI: https://doi.org/10.1007/3-540-45937-5_21
Published:
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-43369-9
Online ISBN: 978-3-540-45937-8
eBook Packages: Springer Book Archive