Project Proposals
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!
Compiler
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
Graph Coloring Register Allocator
Implement a graph coloring register allocator for the optimizing compiler.
Interested mentors: Eliot Moss, Ian Rogers
Vectorization
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
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
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
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
Modularity
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
Miscellaneous
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