A Framework for Optimizing Java Using Attributes

This paper presents a framework for supporting the optimization of Java programs using attributes in Java class files. We show how class file attributes may be used to convey both optimization opportunities and profile information to a variety of Java virtual machines including ahead-of-time compilers and just-in-time compilers.We present our work in the context of Soot, a framework that supports the analysis and transformation of Java bytecode (class files)[21,25,26]. We demonstrate the framework with attributes for elimination of array bounds and null pointer checks, and we provide experimental results for the Kaffe just-in-time compiler, and IBM's High Performance Compiler for Java ahead-of-time compiler.

[1]  Laurie J. Hendren,et al.  Optimizing Java Bytecode Using the Soot Framework: Is It Feasible? , 2000, CC.

[2]  Toshiaki Yasue,et al.  Overview of the IBM Java Just-in-Time Compiler , 2000, IBM Syst. J..

[3]  George C. Necula,et al.  Proof-carrying code , 1997, POPL '97.

[4]  William H. Harrison,et al.  Compiler Analysis of the Value Ranges for Variables , 1977, IEEE Transactions on Software Engineering.

[5]  Samuel P. Midkiff,et al.  Optimizing Array Reference Checking in Java Programs , 1998, IBM Syst. J..

[6]  Michael Wolfe,et al.  Elimination of redundant array subscript range checks , 1995, PLDI '95.

[7]  Rajiv Gupta,et al.  Optimizing array bound checks using flow analysis , 1993, LOPL.

[8]  James M. Stichnoth,et al.  Practicing JUDO: Java under dynamic optimizations , 2000, PLDI '00.

[9]  Wei Li,et al.  Optimizing Java bytecodes , 1997 .

[10]  WolfeMichael,et al.  Elimination of redundant array subscript range checks , 1995 .

[11]  Geoff A. Cohen,et al.  Automatic Program Transformation with JOIE , 1998, USENIX Annual Technical Conference.

[12]  Laurie J. Hendren,et al.  Efficient Inference of Static Types for Java Bytecode , 2000, SAS.

[13]  HendrenLaurie,et al.  Practical virtual method call resolution for Java , 2000 .

[14]  Frank Tip,et al.  Practical experience with an application extractor for Java , 1999, OOPSLA '99.

[15]  Alexandru Nicolau,et al.  Annotating the Java bytecodes in support of optimization , 1997 .

[16]  Alexandru Nicolau,et al.  Java annotation-aware just-in-time (AJIT) complilation system , 1999, JAVA '99.

[17]  Samuel N. Kamin,et al.  Annotating Java class files with virtual registers for performance , 2000 .

[18]  Keith H. Randall,et al.  Field analysis: getting useful and low-cost interprocedural information , 2000, PLDI '00.

[19]  Laurie J. Hendren,et al.  Practical virtual method call resolution for Java , 2000, OOPSLA '00.

[20]  Laurie Hendren,et al.  Soot---a java optimization framework , 1999 .

[21]  Frank Yellin,et al.  The Java Virtual Machine Specification , 1996 .

[22]  Samuel P. Midkiff,et al.  A Standard Java Array Package for Technical Computing , 1999, PPSC.

[23]  Benjamin G. Zorn,et al.  BIT: A Tool for Instrumenting Java Bytecodes , 1997, USENIX Symposium on Internet Technologies and Systems.

[24]  Vivek Sarkar,et al.  ABCD: eliminating array bounds checks on demand , 2000, PLDI '00.