Skip to main content
eScholarship
Open Access Publications from the University of California

A tree-based alternative to Java byte-codes

Abstract

Despite the apparent success of the Java Virtual Machine, its lackluster performance makes it ill-suited for many speed-critical applications. Although the latest just-in-time compilers and dedicated Java processors try to remedy this situation, optimized code compiled directly from a C program source is still orders of magnitude faster than software transported via Java byte-codes. This is true even if the Java byte-codes are subsequently further translated into native code.

In this paper, we claim that these performance penalties are not a necessary consequence of machine-independence, but related to Java's particular intermediate representation. We have constructed a prototype and are further developing a software transportability scheme founded on a tree-based alternative to Java byte-codes. This tree-based intermediate representation is not only twice as compact as Java byte-codes, but also contains more detailed semantic information, some of which is critical for advanced code optimizations.

Our architecture not only provides on-the-fly code generation from this intermediate representation, but also continuous re-optimization of the existing code-base by a low-priority background process. The re-optimization process is guided by up-to-the-minute profiling data, leading to superior optimization results.

Main Content
For improved accessibility of PDF content, download the file to your device.
Current View