SableVM: A Research Framework for the Efficient Execution of Java Bytecode

SableVM is an open-source virtual machine for Java intended as a research framework for efficient execution of Java bytecode. The framework is essentially composed of an extensible bytecode interpreter using state-of-the-art and innovative techniques. Written in the C programming language, and assuming minimal system dependencies, the interpreter emphasizes high-level techniques to support efficient execution. In particular, we introduce a biderectional layout for object instances that groups reference fields sequentially to allow efficient garbage collection. We also introduce a sparse interface virtual table layout that reduces the cost of interface method calls to that of normal virtual calls. Finally, we present a technique to improve thin locks[13] by eliminating busy-wait in presence of contention.

[1]  Kiyokuni Kawachiya,et al.  A study of locking objects with bimodal fields , 1999, OOPSLA '99.

[2]  James M. Stichnoth,et al.  Practicing JUDO: Java under dynamic optimizations , 2000, PLDI '00.

[3]  Mauricio J. Serrano,et al.  Thin locks: featherweight synchronization for Java , 1998, PLDI '98.

[4]  Rafael Dueire Lins,et al.  Garbage collection: algorithms for automatic dynamic memory management , 1996 .

[5]  Joel F. Bartlett,et al.  Compacting garbage collection with ambiguous roots , 1988, LIPO.

[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).

[7]  Y. S. Ramakrishna,et al.  An efficient meta-lock for implementing ubiquitous synchronization , 1999, OOPSLA '99.

[8]  Ali-Reza Adl-Tabatabai,et al.  Fast, effective code generation in a just-in-time Java compiler , 1998, PLDI.

[9]  Bowen Alpern,et al.  Implementing jalapeño in Java , 1999, OOPSLA '99.

[10]  L. Peter Deutsch,et al.  Efficient implementation of the smalltalk-80 system , 1984, POPL.

[11]  Stephen J. Fink,et al.  The Jalapeño virtual machine , 2000, IBM Syst. J..

[12]  Karel Driesen Selector table indexing & sparse arrays , 1993, OOPSLA '93.

[13]  R. Nigel Horspool,et al.  Taming Message Passing: Efficient Method Look-Up for Dynamically Typed Languages , 1994, ECOOP.

[14]  R. Nigel Horspool,et al.  Efficient type inclusion tests , 1997, OOPSLA '97.

[15]  Brad J. Cox,et al.  Object-oriented programming ; an evolutionary approach , 1986 .

[16]  Bjarne Stroustrup,et al.  The Annotated C++ Reference Manual , 1990 .

[17]  Toshiaki Yasue,et al.  Overview of the IBM Java Just-in-Time Compiler , 2000, IBM Syst. J..

[18]  Andrew C. Myers,et al.  Bidirectional object layout for separate compilation , 1995, OOPSLA.

[19]  Ian Piumarta,et al.  Optimizing direct threaded code by selective inlining , 1998, PLDI 1998.

[20]  Erik R. Altman,et al.  LaTTe: a Java VM just-in-time compiler with fast and efficient register allocation , 1999, 1999 International Conference on Parallel Architectures and Compilation Techniques (Cat. No.PR00425).

[21]  Guy L. Steele,et al.  Java Language Specification, Second Edition: The Java Series , 2000 .

[22]  William Pugh,et al.  Two-directional record layout for multiple inheritance , 1990, PLDI '90.