Open runtime platform: flexibility with performance using interfaces

According to conventional wisdom, interfaces provide flexibility at the cost of performance. Most high-performance Java virtual machines today tightly integrate their core virtual machines with their just-in-time compilers and garbage collectors to get the best performance. The Open Runtime Platform (ORP) is unusual in that it reconciles high performance with the extensive use of well-defined interfaces between its components. ORP was developed to support experiments in dynamic compilation, garbage collection, synchronization, and other technologies. To achieve this, two key interfaces were designed: one for garbage collection and another for just-in-time compilation. This paper describes some interesting features of these interfaces and discusses lessons learned in their use. One lesson we learned was to selectively expose small but frequently accessed data structures in our interfaces; this improves performance while minimizing the number of interface crossings.

[1]  Alexander V. Veidenbaum,et al.  Innovative Architecture for Future Generation High-Performance Processors and Systems , 2003, Innovative Architecture for Future Generation High-Performance Processors and Systems, 2003.

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

[3]  David Detlefs,et al.  A generational mostly-concurrent garbage collector , 2000, ISMM '00.

[4]  James Gosling The Java Language Specification - Second Edition , 2000 .

[5]  J. Eliot B. Moss,et al.  Incremental Collection of Mature Objects , 1992, IWMM.

[6]  Alex Garthwaite,et al.  The GC Interface in the EVM 1 , 1998 .

[7]  Guy L. Steele,et al.  The Java Language Specification , 1996 .

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

[9]  J. Eliot B. Moss,et al.  Sapphire: copying GC without stopping the world , 2001, JGI '01.

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

[11]  J. Eliot B. Moss,et al.  Cycles to recycle: garbage collection to the IA-64 , 2000, ISMM '00.

[12]  James M. Stichnoth,et al.  Support for garbage collection at every instruction in a Java compiler , 1999, PLDI '99.

[13]  Paul R. Wilson,et al.  Uniprocessor Garbage Collection Techniques , 1992, IWMM.

[14]  Satoshi Matsuoka,et al.  OpenJIT: An Open-Ended, Reflective JIT Compiler Framework for Java , 2000, ECOOP.

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

[16]  Chandra Krintz,et al.  Using annotations to reduce dynamic optimization time , 2001, PLDI '01.

[17]  Andrew W. Appel,et al.  Modern Compiler Implementation in Java , 1997 .

[18]  Frank Yellin,et al.  The Java Virtual Machine Specification , 1996 .