It is a good idea to review Google's Advice for Students before submitting an application. We've also created information from our experience on how to make a good application. If you are interested in a project that is not listed below, feel free to discuss your proposal on the researchers mailing list. Just be aware of the program timeline when considering a new project proposal. The deadline for student applications is March 26th!


x86 64 Support

A port of the baseline compiler to x86 64 has been performed, although the code hasn't been thoroughly tested and isn't in the code base. This project will integrate the optimizing compiler with the x86 64 architecture.

Interested mentors: Eliot Moss, Ian Rogers

SSE2 Code Generation

Opt and baseline compiler support for generating SSE2 code rather than x87.

Interested mentors: Ian Rogers, Dave Grove

Strictfp Support

Support for IEEE strict floating point.

Interested mentors: Ian Rogers, Dave Grove

Graph Coloring Register Allocator

Implement a graph coloring register allocator for the optimizing compiler.

Interested mentors: Eliot Moss, Ian Rogers


Support for PowerPC and Intel vector instructions either through improved instruction selection (a la Leupers) or through template matching (a la GCC)

Interested mentors: Ian Rogers, Kathryn McKinley

Opt Compiler Refactoring

The opt compiler could do with a tidy up and new/more sanity tests. We could do with fixing the ones we have at the moment and fail.

Interested mentors: Dave Grove, Kathryn McKinley

Instruction Scheduling

Currently Jikes RVM performs instruction scheduling for the PowerPC architecture. We hope to tidy up this code and apply it to Intel architectures.

Interested mentors: Eliot Moss

Performance Analysis & Measurement

Improved Performance Tests and Analysis

Automated nightly performance tests compare Jikes RVM to a number of other VMs using the DaCapo benchmarks. We would like to do a detailed analysis of the places where Jikes RVM is doing unusually well/poorly compared to the other VMs and use this information to determine where the project should focus new development effort to improve system performance.

Interested mentors: Dave Grove, Peter Donald, Robin Garner, Steve Blackburn, Kathryn McKinley


Cattrack is the name of a hypothetical Ruby on Railsweb application that tracks test results over time. The web application would accept uploads of test results and would present the user with a number of reports and graphs to indicate the health and performance of the system over time. The system would also allow users to perform ad-hoc queries. The data model for this application is already developed.

Interested mentors: Peter Donald

JDWP and JVMTI Support

Support for the standard JVM debugger interfaces of JDWP and JVMTI.

Interested mentors: Ian Rogers, Steve Blackburn

JMX Implementation

Currently the Jikes RVM doesn't support the JMX extensions for querying the status of the virtual machine, threading, garbage collection. The Jikes RVM can collect significantly more profiling data and runtime statistics than an average JVM as a result of it being focus on research activities. These statistics would ideally be exported using JMX and could potentially provide a standard mechanism for monitoring the performance and health of the virtual machine and it's components.

Interested mentors: Ian Rogers, Peter Donald, Steve Blackburn

Java-in-Java Implementation

Rewrite Java Class Library in Java

Large portions of existing class libraries are written in C. For example, the best performing BigInteger implementation for Classpath uses the gmp library. Rewrite these functions so that they're written in Java to allow better exploitation runtime compiler optimizations within the library.

Interested mentors: Ian Rogers

Java OS Adapter Layer

Currently Jikes RVM relies on a modest amount of C code to interface to the OS layer. We would like to re-write this in Java, using an efficient native call mechanism to call directly to the relevant libraries from within the Java code.

Interested mentors: Steve Blackburn, Daniel Frampton

Java Bootstrap

Jikes RVM uses a small amount of assembly code and C code to bootstrap its boot image. It would be nice to remove this dependency on C/asm and instead make the boot image directly bootable.

Interested mentors: Steve Blackburn, Daniel Frampton

Garbage Collection

Implement New GC Algorithms

There are a number of new, promising GC algorithms in addition to some older, fundamental algorithms which we would like implemented in MMTk. These include algorithms such as MC2, some new compacting algorithms as well as older incremental algorithms.

Interested mentors: Steve Blackburn, Eliot Moss, Robin Garner, Daniel Frampton, Kathryn McKinley

Implement Concurrent GC

MMTk does not have a concurrent garbage collector. We have done some work on developing basic concurrent GC, but have not got a publicly working implementation yet. Concurrent GC is a high priority.

Interested mentors: Daniel Frampton, Robin Garner, Kathryn McKinley


Object Model

Jikes RVM has a very modular memory manager, and previously had very a modular object model. We'd like to re-implement the object model code so that various object models will be (statically) pluggable, much the same way as memory managers are statically pluggable.

Interested mentors: Robin Garner, Daniel Frampton

Other Components

The modular memory manager and Object Model are only two of many components of JikesRVM that can be made 'pluggable'. This project would seek to identify other tractable components (such as the scheduler, compilers etc) and refactor the code base to allow swapping alternatives. High level restructuring of JikesRVM may be required to introduce a general framework for modularity without sacrificing performance (building on the architecture of the existing modular components).

Interested mentors: Robin Garner, Daniel Frampton


Java OS Integration

Integrate Jikes RVM with an existing open source Java OS.

Interested mentors: Ian Rogers, Robin Garner, Daniel Frampton

Lock Reservation/Biasing

Improve upon the thin locks currently used in Jikes RVM with lock reservation/biasing (see here for an example of recent work in this area). There is probably not too much work here.

Interested mentors: Ian Rogers

Embedded Jikes RVM

Run Jikes RVM in a memory foot print of just 30MB.

Interested mentors: Ian Rogers

Harmony Class Library Support

Integrate the RVM with the Harmony class library.

Interested mentors: Steve Blackburn, Peter Donald, Robin Garner