Implementing an Efficient Java Interpreter

The Java virtual machine (JVM) is usually implemented with an interpreter or just-in-time (JIT) compiler. JIT compilers provide the best performance, but must be substantially rewritten for each architecture they are ported to. Interpreters are easier to develop and maintain, and can be ported to new architectures with almost no changes. The weakness of interpreters is that they are much slower than JIT compilers. This paper describes work in progress on a highly efficient Java interpreter. We describe the main features that make our interpreter efficient. Our initial experimental results show that an interpreter-based JVM may be only 1.9 times slower than a compiler-based JVM for some important applications.

[1]  James R. Bell,et al.  Threaded code , 1973, CACM.

[2]  Andreas Krall,et al.  CACAO — A 64‐bit JavaVM just‐in‐time compiler , 1997 .

[3]  Lex Augusteijn,et al.  Pipelined Java Virtual Machine Interpreters , 2000, CC.

[4]  M. Anton Ertl,et al.  Stack caching for interpreters , 1995, PLDI '95.

[5]  Todd A. Proebsting Optimizing an ANSI C interpreter with superoperators , 1995, POPL '95.

[6]  Andreas Krall,et al.  Efficient JavaVM just-in-time compilation , 1998, Proceedings. 1998 International Conference on Parallel Architectures and Compilation Techniques (Cat. No.98EX192).