The Open Runtime Platform: A Flexible High-Performance Managed Runtime Environment

 

The Open Runtime Platform (ORP) is a high-performance

managed runtime environment (MRTE) that features exact

generational garbage collection, fast thread

synchronization, and multiple coexisting just-in-time

compilers (JITs). ORP was designed for flexibility in

order to support experiments in dynamic compilation,

garbage collection, synchronization, and other

technologies. It can be built to run either Java∗ or

Common Language Infrastructure (CLI) applications, to

run under the Windows or Linux operating systems, and to

run on the IA-32 or Itanium processor family (IPF)

architectures.

Achieving high performance in an MRTE presents many

challenges, particularly when flexibility is a major goal.

First, to enable the use of different garbage collectors and

JITs, each component must be isolated from the rest of the

environment through a well-defined software interface.

Without careful attention, this isolation could easily harm

performance. Second, MRTEs have correctness and

safety requirements that traditional languages, such as

C++, lack. These requirements, including null pointer

checks, array bounds checks, and type checks, impose

additional runtime overhead. Finally, the dynamic nature

of MRTEs makes some traditional compiler optimizations,

such as devirtualization of method calls, more difficult to

implement or more limited in applicability. To get full

performance, JITs and the core virtual machine (VM)

must cooperate to reduce or eliminate (where possible)

these MRTE-specific overheads.

In this paper, we describe the structure of ORP in detail,

paying particular attention to how it supports flexibility

while preserving high performance. We describe the

interfaces between the garbage collector, the JIT, and the

core VM; how these interfaces enable multiple garbage

collectors and JITs without sacrificing performance; and

how they allow the JIT and the core VM to reduce or

eliminate MRTE-specific performance issues.

Download (215.19 KB)