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
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
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
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
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
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
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
During the week there is a few of us that are about in IRC. Details are on the IRC page.
Is there an irc channel where i can talk to some of the mentors?