Quick Links:

Releases | Mailing Lists | Source Control | Issue Tracker | Regression Tests

Jikes RVM User Guide

Jikes RVM User Guide

Jikes RVM Contributors and Core Team


The User Guide provides JikesTM RVM information that is not typically covered in published papers. For high-level overviews, algorithms, and structures, you will find the published papers to be the best starting place. The User Guide supplements these Jikes RVM papers, focusing on implementation details of how to build, run, and add functionality to the system.

You may find sections of the User Guide missing, incomplete or otherwise confusing. We intend this document to live as a continual work-in-progress, hopefully growing and maturing as community members edit and add to the guide. Please accept this invitation to contribute.

Please send feedback, bug fixes, and text contributions to the core mailing list or open a pull request on GitHub. Constructive criticism will be cheerfully accepted.

I  Care and Feeding
1 Quick Start Guide
2 Get the Source
 2.1 Download a Release
 2.2 Use Git
3 Building Jikes RVM
 3.1 Overview
 3.2 Target Requirements
 3.3 Tool Requirements
 3.4 Instructions
 3.5 Building Patched Versions
 3.6 Cross-Platform Building
 3.7 Primordial Class List
 3.8 Using buildit
4 Configuring Jikes RVM
 4.1 Jikes RVM Configurations
5 Debugging Jikes RVM
 5.1 General debugging tips
 5.2 Tools
 5.3 Debugging Optimizing Compiler Problems
 5.4 Debugging problems related to the class library
 5.5 GDB Stack Walking
6 Experimental Guidelines
 6.1 Which boot image should I use?
 6.2 Compiler Replay
 6.3 Measuring GC performance
 6.4 Jikes RVM is really slow! What am I doing wrong?
 6.5 Stability of Jikes RVM
7 Modifying Jikes RVM
 7.1 Adding command line options
 7.2 Adding a new garbage collector
 7.3 Coding Conventions
 7.4 Coding Style
 7.5 Compiler DNA
 7.6 Editing Jikes RVM in an IDE
8 Profiling Applications with Jikes RVM
 8.1 Instrumented Event Counters
9 Running Jikes RVM
 9.1 Standard Command-Line Options
 9.2 Non-Standard Command-Line Options
 9.3 Running Jikes RVM with Valgrind
10 Testing Jikes RVM
 10.1 Unit Tests
 10.2 Functional and Performance Tests
 10.3 External Test Resources
 10.4 Test Run Descriptions
11 The MMTk Test Harness
 11.1 Overview
 11.2 Standalone
 11.3 In Eclipse
 11.4 Test harness options
 11.5 Scripts
 11.6 Scripting language
 11.7 MMTk Unit Tests
II  Architecture
12 Adaptive Optimization System
 12.1 AOS Controller
 12.2 Cost Benefit Model
 12.3 Jikes RVM’s compilers
 12.4 Life Cycle of a Compiled Method
 12.5 Logging and Debugging
 12.6 Threading and Yieldpoints
13 Compilers
 13.1 Baseline Compiler
 13.2 Optimizing Compiler
14 Core Runtime Services
 14.1 Object Model
 14.2 Class and Code Management
 14.3 Thread Management
 14.4 JNI
 14.5 Exception Management
 14.6 Bootstrap
 14.7 Calling Conventions
 14.8 VM Callbacks
15 Magic
 15.1 Compiler Intrinsics
 15.2 Unboxed Types
 15.3 Raw Memory Access
 15.4 Uninterruptible Code
16 MMTk
 16.1 Anatomy of a Garbage Collector
 16.2 Memory Allocation in Jikes RVM
 16.3 Scanning Objects in Jikes RVM
 16.4 Using GCSpy
17 Interface to the Class Library
 17.1 Overview
 17.2 GNU Classpath VM interface
 17.3 Naming conventions
 17.4 Build organisation
III  MMTk Tutorial
18 Preliminaries
 18.1 Getting MMTk and Jikes RVM and Eclipse working
 18.2 Creating The Base Tutorial Collector
19 Building a Mark-sweep Collector
 19.1 Free-list Allocation
 19.2 Mark-Sweep Collection
 19.3 Optimized Mark-sweep Collection
20 Building a Hybrid Collector
 20.1 Add a Copying Nursery
 20.2 Add nursery allocation
 20.3 Add copying to the collector
 20.4 Make necessary changes to TutorialTraceLocal