This year we had four Summer of Code projects. We are very grateful to Google for their support and are pleased that all four students successfully passed. As part of the GSoC, Google also provided Jikes RVM with 4 x $500 which we will use to support the regression testing kit at ANU. Below are short summaries of the outcomes of the four projects. The source code for all these project can be found at http://jikesrvm.hg.code.sourceforge.net:8000/hgrootp/jikesrvm/soc2011.
1) Tools for debugging the Jikes RVM runtime
The major stumbling blocks related to threading and monitors and the JVMTI implementations thereof. This, combined with the sheer size of the specification (even after reducing it to simpler test cases) mean only a partially operating implementation is available. I intend to revisit these later this month when coursework dies down again, with the goal of getting it to a state where it can be committed to the head. This does not necessarily mean it will be a fully functional and compliant implementation of the specification, but the goal is to have most of Harmony's implementation of a JDWP agent using JVMTI operational. This will allow some form of interactive debugging at the application level (using e.g. the Eclipse debugger), but the parts of JVMTI implemented to make this happen will also allow other, lower level tasks to be completed. For now, my work is on a branch in our soc2011 repository at http://jikesrvm.hg.code.sourceforge.net/hgwebp/jikesrvm/soc2011, together with a readme describing the future directions further.
- Tune the compiler DNA to allow for more efficient multi-threaded recompilation of hot methods
- Evaluate if any other locations in the Source Code can benefit from multi-method compilation
The mentoring organization application deadline for the Google Summer of Code 2011 is March 11. We have had some really excellent contributions to JikesRVM come out of previous Summers of Code, and we intend to apply again. For this we need a strong set of proposals, so please take the time to look at the ones below and offer some more.
MMTk has a basic concurrent garbage collector and Laurence Hellyer added Sapphire as part of GSoC 2010. However, we would like to have more, for example, Concurrent immix, the Doliguez-Leroy-Gonthier algorithm (POPL93, POPL94, ISMM00), Azatchi et al (OOPSLA03), or mostly concurrent (Boehm91, Barabash et al 2005).
A useful reference is the 2009 paper describing VM Magic, including some of these unimplemented features.