DRLVM stands for Dynamic Runtime Layer Virtual Machine, a clean-room implementation of the J2SE 1.5.0
virtual machine.
Key goals of DRL include the following:
- Modularity: Functionality is grouped into a limited number of
coarse-grained modules with well defined interfaces.
- Pluggability: Module implementations can be replaced at compile time or run time.
Multiple implementations of a given module are possible.
- Consistency: Interfaces are consistent across platforms.
- Performance: Interfaces fully enable implementation of modules optimized for specific target platforms.
The following documentation links are specific to the DRLVM virtual machine
effort underway at Apache Harmony.
-
README
Source package and building instructions for the VM source code.
-
Getting Started with DRLVM
Basic usage scenarios of VM: starting an application, working in Eclipseâ„¢
- Debugging VM and JIT
Guide to debugging VM and Jitrino.JET source code covering
basic actions and some useful tips
-
Developer's Guide
In-depth description of the DRLVM internal architecture and components' interaction
Now with additions in separate documents:
-
Execution Manager Component Description
Detailed description of the Execution Manager current implementation
-
Thread Manager Component Description
Detailed description of the Thread Manager current implementation
-
Kernel Classes Component Description
Detailed description of the kernel classes implementation with focus on the native part of
kernel classes and the internal kernel classes interface.
-
JIT Compiler Component Description
Detailed description of the Jitrino just-in-time compiler implementation; gives details on
the internal architecture of the Jitrino.JET baseline compiler and Jitrino.OPT optimizing compiler,
as well as processes running inside them.
Relies on the other component descriptions and the
Jitrino Pipeline Management Framework description.
-
Jitrino Pipeline Management Framework
Detailed description of the pipeline management framework
that provides complete control over just-in-time compilation process through
the Java property mechanism. The description covers the PMF application to
the command-line interface and to the Jitrino logging system.
Relies on the JIT Compiler Component Description,
which gives a general definition of PMF.
-
Jitrino Internal Profiler Description
Description of the code generator's internal profiler tool (iprof) for Jitrino.OPT
just-in-time compiler, which defines the tool, illustrates its sample output and
configuration mechanisms
Relies on the JIT Compiler Component Description,
which gives a general definition of just-in-time compilation and code generation processes.
-
Bytecode Verifier
Technical Details for Harmony Bytecode Verifier, including algorithm description.
-
Encoder Library for
IA-32/Intel64
Description of the encoder library for code generation; the document focuses
on the specifics of the current implementation showing the encoder library
structure and role inside the DRL virtual machine.
-
Generational Garbage Collector Component Description
Detailed description of the GCv5 current design and implementation, including
key GC-related terms, GC history and current architecture.
-
Universal signals,
exceptions and crash handler
Description of signals, exceptions and crash handler
used in DRLVM: its internal algorithms, and how it
communicates with the rest of VM application.
-
Implementation of JVMTI API components in DRLVM
-
Implementation of breakpoints and single step
JVMTI functionality in JIT mode.
-
JVMTI PopFrame Implementation
Details on the PopFrame implementation as currently done in DRLVM.
The document indicates the functions responsible for the operation and
gives info on specifics of the current implementation.
-
Native Code Access Interface (NCAI) Implementation
- DRLVM Source Code Generated Documentation Index
This section lists the various guides to specific aspects of the Virtual Machine.
-
Configuring Execution Manager
Guide to Execution Manager (EM) options and configuration file format.
-
How to write DRL GC
Instructions on creating a custom garbage collector implementation in C++
and configuring the DRL virtual machine to use it with a real-life example
of a copying GC implementation (source included)
Back to top