From JVMLangSummit
Jump to navigationJump to search

Leveraging Meta-Circularity in the Maxine VM

Bernd Mathiske, Sun


The Maxine VM minimizes the amount of compiler work needed to implement or modify other runtime features by exploiting meta-circular design loops.

There is no hand-written intermediate representation manipulation outside the translator and optimizer and there are only about a dozen lines of hand-written assembler. Low-level constructs such as field access, method invocation, write barriers and others are malleably expressed in the Java language, even though optimizations with specialized domain knowledge operate on them. Furthermore, the compiler can use its own generated code, for instance when performing meta-evaluation by reflective invocation.

The second compiler in the Maxine VM is a portable, ultra-light fast JIT, whose objective is to produce code as quickly as possible. By deriving most of its generated code from output of the heavy, optimizing compiler, portability is achieved in several aspects, in particular maintaining runtime feature orthogonality.

A third, trace-based compiler (by collaborators from UCI) is underway and will soon be experimented with. It builds traces without an interpreter, instrumenting fast JIT code instead.

To build a VM around an optimizing compiler instead of an interpreter meant not having a running system for an extended time. This has been mitigated by unit testing with IR interpreters at every IR level.

Author Bio

Dr. Bernd Mathiske is a Senior Staff Engineer at Sun Labs and the principal investigator of the Maxine project, which develops the meta-circular research VM by the same name.

In the Consumer and Mobile Systems Group of Sun's Software division, he led the product development of CLDC HotSpot Implementation, which became the leading JVM in the mobile phone market.

Mathiske also led the CheckSpot project at Sun Labs, which produced prototypes for Solaris process checkpointing and for native JVM checkpointing. He first came to Sun Labs in 1997 to ct where he spearheaded the design and implementation of persistent object caching for a high-performace JVM (PEVM).

Key Issues for Discussion (cooperative)

(please expand cooperatively) Talk:MaxineVM