The Java .class file is a compact encoding of programs for a stack-based virtual machine. It is intended for use in a networked environment, which requires machine independence and minimized consumption of network bandwidth. However, as in all interpreted virtual machines, performance does not match that of code generated for the target machine. We propose verifiable, machine-independent annotations to the Java class file to bring the quality of the code generated by a "just-in-time" compiler closer to that of an optimizing compiler without a significant increase in code generation time. This division of labor has expensive machine-independentanalysis performed off-line and inexpensive machine-dependent code-generation performed on the client. We call this phenomenon "super-linear analysis and linear exploitation." These annotations were designed mindful of the concurrency features of the Java language. In this paper we report results from our machine-independent, ...
Joel Jones, Samuel N. Kamin