In this paper, we propose architectural support for object manipulation, stack processing and method invocation to enhance the execution speed of Java bytecodes. First, a virtual address object cache that supports efficient manipulation and relocation of objects is presented. The proposed scheme combines the serialized handle and object lookup into a single lookup. Next, the extended folding optimization that combines the execution of a sequence of bytecodes is proposed. This eliminates the redundant loads and stores of local variables associated with stack architectures. Also, three cache-based schemes: hybrid cache, hybrid polymorphic cache and two-level hybrid cache to implement virtual method invocations are presented. These schemes utilize the receiver type locality at call sites and eliminate the need for creating dispatch tables used in current JVM implementations.
Narayanan Vijaykrishnan, N. Ranganathan, Ravi Gade