Open runtime platform: Flexibility with performance using interfaces
M Cierniak, BT Lewis, JM Stichnoth - Proceedings of the 2002 joint ACM …, 2002 - dl.acm.org
M Cierniak, BT Lewis, JM Stichnoth
Proceedings of the 2002 joint ACM-ISCOPE conference on Java Grande, 2002•dl.acm.orgAccording 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 …
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 …
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.