Google Summer of Code 2012

We have had some excellent contributions to Jikes RVM resulting from projects in previous Summers of Code (e.g. 2011) and we hope that this will also be the case for Google Summer of Code 2012.

If you are a student and would like to apply, please read the GSoC FAQ and our guidelines on making an application. The deadline for student applications is April 6.

If you are not a student and would like to propose an idea that is not listed here, please share your idea on the jikesrvm-researchers mailing list. Please indicate whether you would be able to mentor the project if it is selected.

Compiler Projects

Port of the opt compiler to x86_64

The optimizing compiler is completely ported to ppc64, so this would require a similar piece of work for the x86 code generator. If the baseline compiler is working on x86_64, then the assembler work has already been done, so porting the opt compiler actually should be entirely doable by someone who is comfortable with lowlevel x86/x86_64 debugging.

There is some prior work on x86_64 support for both baseline and opt compiler in MRP (Metacircular Research Platform), a fork of the Jikes RVM. Additional patches relating to the x86_64 opt compiler support are available on MRP's bugtracker.

Interested Mentors: Eliot Moss, Tony Hosking

Port of the compiler to ARM/Linux

ARM is a popular 32-bit embedded processor, for the mobile market [wikipedia] and for hobbyists [e.g. beagle, raspberrypi]. This GSoC project involves porting the Jikes RVM baseline compiler (and then possibly the opt compiler) to ARM/Linux. There is some prior incomplete work on an ARM port from Manchester University, which could be used as a starting point.

Another useful outcome from this project would be the production of a document: Porting Jikes RVM for Dummies - similar to the analogous docs for GCC. This would be an extremely useful contribution to the community, by itself.

Interested Mentors: Jeremy Singer, Matt Horsnell (from ARM)

Better debugging support for the RVM

The Jikes RVM would benefit from better debugging support. One possibility would be to generate DWARF and use GDB. There is already a tool that can do that for MRP (Metacircular Research Platform), a fork of the Jikes RVM.

Interested Mentors: TBD

Garbage Collector (MMTk) Projects

The Compressor Mark-Compact Garbage Collector

The garbage collectors for the Jikes RVM are provided by the Memory Management Toolkit (MMTk). This project would add the Compressor Mark-Compact algorithm to MMTk's suite of collectors, starting with a stop the world implementation.

An implementation has been started in GSoC 2010 by Michael Gendelman but it is still incomplete. His work is available on Google Code.

Interested Mentors: TBD


GCSpy 2.0

The GCspy framework for garbage collector visualization has become out-of-date and needs improving [RVM-388]. GCSpy 2.0 should update the framework to work properly with the latest version of Jikes RVM. In addition, the rewrite might improve modularity, and possibly integrate with the Eclipse Rich Client Platform.

Interested mentors: Richard Jones


Unit tests for the Jikes RVM

Unit tests are very useful to find and isolate bugs. They are also essential for refactoring because they help to prevent the introduction of bugs. The unit tests should be runnable from an IDE and integrated into the existing test infrastructure. This project could also be motivated by a refactoring effort in a part of the RVM.

Interested Mentors: Andreas Sewe

Modularize the Jikes RVM

Currently there is a connection between different parts of the RVM that is less than desirable. We would like to have better isolation of components to more easily allow plug in replacements to be created. Such changes are likely to have an effect across the code base, so interacting with the development community will be important.

Previous research in modularity of JVMs includes the Maxine project from Oracle.

Interested Mentors: Andreas Sewe

Java Management Extensions (JMX)

Currently the Jikes RVM does not support JMX. The Jikes RVM can collect significantly more profiling data and runtime statistics than an average JVM as a result of it being focussed 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.

Andrew John Hughes worked on a JMX implementation for GSoC 2007.

Interested Mentors: TBD

OpenJDK Class Library Integration

Jikes RVM presently runs with the GNU Classpath and Apache Harmony Java standard library implementations. However development has stalled on both these projects. We would like to get Jikes RVM running with the OpenJDK class library. This would give us better API coverage for running benchmarks, and also make us much more future-proof.

Interested Mentors: Steve Blackburn  

Runtime Services

Implement (a subset of) the JVM Tool Interface (JVMTI)

The JVMTI is the part of the Java Platform Debugger Architecture that JVMs can implement to provide debugging capabilities. The Jikes RVM currently does not have a complete implementation of the JVMTI but James Bornholt has developed a partial implementation for GSoC 2011. His code is availabe on the GSoC repository for 2011. This project would finish his implementation and get it ready for the mainline.

Interested Mentors: Steve Blackburn