Annotation-aware Java virtual machine implementation

Ana Azevedo, Alex Nicolau, Joe Hummel

Research output: Contribution to journalConference articlepeer-review

3 Scopus citations


The Java bytecode language lacks expressiveness for traditional compiler optimizations, making this portable, secure software distribution format inefficient as a program representation for high performance. This inefficiency results from the underlying stack model, as well as the fact that many bytecode operations intrinsically include sub-operations (e.g. iaload includes the address computation, array bounds checks and the actual load of the array element). The stack model, with no operand registers and limiting access to the top of the stack, prevents the re-use of values and bytecode re-ordering. In addition, the language has no mechanism to indicate which sub-operations in the Java bytecode stream are redundant or subsumed by previous ones. As a consequence, the Java bytecode language inhibits the expression of important compiler optimizations, including register allocation and instruction scheduling. The Java bytecode stream generated by a Java bytecode compiler is a significantly under-optimized program representation. The most common solution to overcome this inefficiency is the use of a just-in-time (JIT) compiler to not only generate native code, but perform optimization as well. However, the latter is a time-consuming operation in an already time-constrained translation process. In this paper we present an alternative to an optimizing JIT compiler that makes use of code annotations generated by a Java bytecode compiler. These annotations carry information concerning compiler optimizations. During the translation process, an annotation-aware Java Virtual Machine (JVM) system then uses this information to produce high-performance native code without performing much of the necessary analyses or transformations. We describe the implementation of a prototype of an annotation-aware JVM consisting of an annotation-aware JIT compilation system. We conclude the paper showing performance results comparing our system with other JVMs running on SPARC architecture.

Original languageEnglish (US)
Pages (from-to)423-444
Number of pages22
JournalConcurrency Practice and Experience
Issue number6
StatePublished - May 2000
EventACM 1999 Java Grande Conference - San Francisco, CA, USA
Duration: Jun 12 1999Jun 14 1999

ASJC Scopus subject areas

  • General Engineering


Dive into the research topics of 'Annotation-aware Java virtual machine implementation'. Together they form a unique fingerprint.

Cite this