Jikes RVM 3.1.3 Released

Jikes RVM version 3.1.3 has been released and is available for download at http://downloads.sourceforge.net/jikesrvm/jikesrvm-3.1.3.tar.bz2

Details are browsable online in our JIRA instance at http://jira.codehaus.org/browse/RVM/fixforversion/18230.

The significant impact of the Jikes RVM research community was recently recognized by ACM's Special Interest Group on Programming Languages (SIGPLAN) who awarded the 2012 SIGPLAN Software Award to Jikes RVM.   Quoting from the award citation.

Jikes RVM was the first Java-in-Java virtual machine and contains many innovations, especially on adaptive optimization and memory management.

The high quality and modular design of Jikes has made it easy for researchers to develop, share, and compare advances in programming language implementation. The Jikes RVM core team has nurtured and supported a large community of researchers; this is witnessed by more than 200 papers, at least 40 dissertations, close to 25 courses, and research at almost 100 universities, that are based on the Jikes RVM.

The award names thirty two individuals who have made significant contributions to the project since it began in 1997.  It also calls out the much larger set of code contributors and researchers who have made the Jikes RVM community possible with their energy and involvement.  Congratulations and thank you to everyone who has been part of the Jikes RVM research community over the years!


Google Summer Of Code 2012

We have been accepted in Google Summer of Code 2012 as a mentoring organization. See here for details. To that end, we are looking for project applications - see our ideas page. We have suggested both new and repeat proposals. It is part of the student's responsibilities to flesh out their own proposals, so don't hesitate to suggest crazy and/or sketchy ideas on the researchers mailing list.

The deadline for student applications at google-melange.com is Friday 6 April.

Jikes RVM 3.1.2 Released

We're happy to announce that Jikes RVM 3.1.2 has been released and is available for download. This release contains a number of enhancements and bug fixes contributed by the Jikes RVM community — Thanks!  

Highlights of the release can be found in the release notes.

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.

Summaries of the outcomes of the four projects can be found on our Google Summer of Code 2011 page.

  • Tools for debugging the Jikes RVM runtime, James Bornholt
  • An Efficient Mark & Sweep Concurrent Snapshot-Based And On The Fly Sliding-Views based Garbage Collectors For Jikes RVM, Shahar Timnat
  • Generational Collector Organisation, Gary Rampaud
  • Parallel Compilation Services for Jikes RVM on multicore, Michael J Taylor

We very much hope that James, Shahar, Gary and Michael will continue to contribute to Jikes RVM and we wish them well for their future studies.

Summer of Code projects

This year we have four Google Summer of Code projects. The students are:

Tools for debugging the Jikes RVM runtime
James Bornholt, ANU
mentors: Steve

An Efficient Mark & Sweep Concurrent Snapshot-Based And On The Fly Sliding-Views based Garbage Collectors For Jikes RVM
Shahar Timnat, Technion
mentors: Daniel

Generational Collector Organisation
Gary Rampaud, Kent
mentors: Richard

Parallel Compilation Services for Jikes RVM on multicore
Michael J Taylor, Pittsburgh
mentors: Jeremy

Jikes RVM has been accepted for the 2011 Google Summer of Code. Students will receive a stipend for working on code for 3 months between May and August. The period for students to apply is rapidly approaching so please spread the word. 

You can find our project proposals at http://jikesrvm.org/Google+Summer+of+Code+2011

Student deadline: 28 March and 8 April.  

Google Summer of Code 2011

We are hoping to participate in the Google Summer of Code 2011. We have had some really excellent contributions to JikesRVM come out of previous Summers of Code so please take the time to visit the Jikes RVM Google Summer of Code 2011 pages.

The current set of project proposals is a draft, mainly made up of proposals from last year. We need new projects and new mentors. Please offer some.

The organization application deadline is 11 March.

Jikes RVM 3.1.1 Released

Jikes RVM version 3.1.1 has been released and is available for download at http://downloads.sourceforge.net/jikesrvm/jikesrvm-3.1.1.tar.bz2

Details are given below, or are browsable online in our JIRA instance at http://jira.codehaus.org/browse/RVM/fixforversion/14900.

New Feature

  • RVM-839 - Support for Reference Types in the MMTk Harness
  • RVM-841 - Make it possible to query the compiler to direct optimization
  • RVM-845 - Primitive write barrier support


  • RVM-846 - MMTk Harness: Provide command-line option for watching addresses
  • RVM-848 - Update bootimage writter with known static fields for Harmony classlib
  • RVM-861 - Refactor bulkCopy optimisations for RVMArray arraycopy's


  • RVM-184 - MarkCompactLocal.compact():80 assertion failure
  • RVM-604 - Require two different host JVMs to successfully build on Linux/PowerPC
  • RVM-639 - Spec JVM 98 javac failing with Harmony
  • RVM-693 - Regression in TestSerialization with Harmony
  • RVM-827 - Crash in GC while running Eclipse IDE
  • RVM-831 - Incomplete implementation of GetFieldID and GetStaticFieldID
  • RVM-832 - Mature space mutator allocator reset before semi-space flip
  • RVM-833 - GC failures with ia32 BaseBase compiler, ExtremeAssertions and -X:gc:verbose=1
  • RVM-834 - Assertion failure in ExtremeAssertionsBaseBaseSemiSpace
  • RVM-836 - Static initialization loop in Generational collectors
  • RVM-838 - MMTk Harness 'Spawn' script fails with an NPE on multiprocessors
  • RVM-840 - MMTk Harness fails on Poisoned heap collector
  • RVM-854 - Failed to find a value to spill when
  • RVM-856 - RVM fails to build under OS X 10.6
  • RVM-860 - ExtremeAssertionsOptAdaptive compiler failure for jvm98 _227_mtrt on ppc32
  • RVM-862 - 2 static fields using an identic slot
  • RVM-863 - BumpPointer.scanRegion can cause a page fault
  • RVM-864 - Build failure using IBM Java 6 SDK as host JVM on linux-ia32
  • RVM-879 - Mark Compact does not work with Native Threads
  • RVM-887 - RVM failure at startup when using -Xbootclasspath (Trying to load a class too early in the booting process)
  • RVM-889 - JSR166 tck fails EntryTest, PriorityQueueTest and PriorityBlockingQueueTest
  • RVM-890 - MarkCompact broken by new threading model
  • RVM-894 - MMTk Harness doesn't allow Log.writeln in constructors

Three students will be working on Jikes RVM as part of the 2010 Google Summer of Code. They are:

  1. Laurence Hellyer, University of Kent, On-the-fly copying GC. Mentors: Eliot Moss, Daniel Frampton and Richard Jones.
  1. Michael Gendelman, Tel Aviv University, Implementing the Compressor. Mentors: Steve Blackburn and Richard Jones
  1. Ashwani Rao, University of Delaware, Improved Register Allocator for x86 and x86_64. Mentors: Tony Hosking, John Cavazos and Eliot Moss.

Laurence, Michael, Ashwani: welcome to the team. We are all looking forward to working with you and seeing the end product of your efforts.

The JikesRVM GSoC page is here. The GSoC timeline is here.

I am very pleased to announce that Jikes RVM has been accepted for the 2010 Summer of Code. GSoC allows students to work closely with a mentor on a project of interest to Jikes RVM between 24 May and 20 August. Google will pay a stipend of $5000 to each accepted student developer. In the past, good things have come out of the GSoC and students have enjoyed the programme. You can find more details of the programme at gsoc2010.

Our project suggestions and associated mentors are listed on our Jikes RVM proposals page

If you are interested in participating in the GSoC, please start talking to a mentor now. The formal application period is 29 March - 9 April (both at 12 noon PDT / 19:00 UTC). The complete timeline for the programme is here.

I'd be grateful if you could circulate this announcement to any student you think might be interested in making a contribution to Jikes RVM.


Google Summer of Code 2010

We are hoping to participate in the Google Summer of Code 2010. We have had some really excellent contributions to JikesRVM come out of previous Summers of Code so please take the time to visit our Google Summer of Code 2010 pages and possibly add some project proposals.

The organization application deadline is March 12.

Jikes RVM Project Changes

Dear Jikes RVM Researchers,

We are writing to introduce two new members to the Jikes RVM Steering Committee, announce some changes to the project organization, and highlight our performance results, which are now competitive with the products on the DaCapo Benchmarks.

Steering Committee

We have invited Richard Jones (U. Kent) and Kathryn McKinley (U. Texas) to join us on the Steering Committee. Both Kathryn and Richard have accepted our invitation. Kathryn and Richard been involved with the project since its inception. They both have a long track record of engagement with the project; directly and through the activities of their respective research groups. Their addition to the committee reflects our view that our stakeholders are researchers and that our mission is enabling research.

Project Organization

We have also made a minor change to the project structure, replacing the term "Core Team" with "Jikes RVM Team". We also extend team membership to anyone who has demonstrated a substantial commitment to the project through concrete contributions. Such contributions are not limited to code, but may include substantive contributions to the health of the project in any form. These changes are intended to emphasize the importance of researchers as the primary stakeholders in this project, and to make it explicit that the importance of a member's input is not measured in terms of the quantity or quality of changes to the code base.

We will also now encourage team members to follow a "12 month rule", whereby they are asked to reassess their team membership after a period of 12 months of inactivity


Due to the efforts of the Jikes RVM Team in adding features (such as native threads, Immix GC, and biased locking), and tuning the adaptive system, we have recently achieved really excellent performance results. While Jikes RVM still lags behind the products on the SPEC benchmarks (the products are highly tuned for SPEC), Jikes RVM attains within 5% of their performance on the DaCapo Benchmarks. Results are available here: http://jikesrvm.anu.edu.au/performance/2009-07/

These performance gains make Jikes RVM an even more appealing research platform and offer more evidence that Java can be an effective system implementation language. (smile)

We hope that these changes will bring new life to the project and re-affirm the project's original objectives of supporting the research community. Kathryn, Richard and the rest of the Jikes RVM Steering Committee welcome comments, suggestions and feedback from our community.

David Grove
Steve Blackburn
Mike Hind

Jikes RVM 3.1.0 Released

Jikes RVM version 3.1.0 has been released and is available for download at http://downloads.sourceforge.net/jikesrvm/jikesrvm-3.1.0.tar.bz2

It's been almost nine months since the release of Jikes RVM 3.0.1, and quite a bit has changed in Jikes RVM. We'd like to call out several items that may be of particular interest to the community.

  1. Jikes RVM has switched to using native threading instead of m-to-n (aka green) threading.
  2. The default mature space collector has changed from Mark-Sweep to Immix.
  3. Jikes RVM is now licensed under the Eclipse Public License (EPL).
  4. The 3.1 release significantly improves over the performance of 3.0.1, with speedups of 10% and 21% on average for DaCapo and SPEC benchmarks respectively on an Intel C2Q. Highlights include a 29% improvement in jbb and a 32% improvement in jython.

Details are given below, or are browsable online in our JIRA instance at http://jira.codehaus.org/browse/RVM/fixforversion/14620.

New Feature

  • RVM-641 - Make Immix the default mature space collector
  • RVM-682 - Assertion checking in sysMalloc
  • RVM-802 - Debugging hooks in MMTk
  • RVM-806 - Heavyweight sanity checker for MMTk Harness
  • RVM-807 - Simple type system for MMTk Harness scripting language


  • RVM-460 - Not accounting for nursery promotion AND defrag in GenImmix
  • RVM-498 - ppc-linux32 dying on SPEC jbb 2005 with 4 threads
  • RVM-613 - asking if a method has a hasBaselineSaveLSRegistersAnnotation triggers classloading (and thus GC) when GC is disabled during OSR
  • RVM-625 - FullAdaptiveImmix and FullAdaptiveStickyImmix broken on ppc32-linux
  • RVM-638 - Crash in Poisoned configs on PPC (aix/linux, 32/64) apparently relating to clone
  • RVM-662 - Error growing discontiguous space
  • RVM-664 - Occasional digest validation errors on lusearch performance runs
  • RVM-683 - Fix race in AOS controller/organizer synchronication during startup
  • RVM-690 - Class loader and reflection problems for unboxed types
  • RVM-696 - Don't recomend copying project contents with eclipse-project
  • RVM-698 - Don't clear most significant bits for <32bit return types on Intel breaks Ubuntu 8.10
  • RVM-700 - Not running class initializer for InetAddress causing ServerSocket failures
  • RVM-701 - Edge Counter and Dynamic Call Graph output after run fails
  • RVM-703 - Throwable.getStackTrace() implementation is incorrect
  • RVM-704 - Regressions from 2.9.1 not allowing jetty web server to run
  • RVM-708 - Bad reference map created by IA32 baseline compiler
  • RVM-712 - Uninterruptible code should not be allowed to call UnpremptibleNoWarn methods
  • RVM-722 - Bug in Static Spliting induces unconditional OSR invalidations when running _228_jack in measure compilation mode
  • RVM-729 - enabling simple_escape_ipa causes a ClassCastException
  • RVM-732 - Exception in thread "MainThread" java.security.AccessControlException: permission (java.lang.RuntimePermission exitVM) not granted: no protection domains
  • RVM-733 - rvm crash when closing a file in ExitMonitor.notifyExit(int value)
  • RVM-738 - Fix debugging output when extracting long variable values for OSR
  • RVM-743 - compress-3GC fails with OOME
  • RVM-744 - Terminal not in grammar: read_ceiling (BURS)
  • RVM-748 - Bug in type checking when > 32767 types
  • RVM-756 - Intel unnecessarily restricts boot image to be at addresses > 0x30000000
  • RVM-774 - Incorrect implementation of static initializers in the case of initializers that throw exceptions
  • RVM-795 - Baseline GC Maps with JSRs fails to set reference flag for aload operations
  • RVM-800 - In TemplateCompilerFramework.genCode, case JBC_anewarray, I don't believe that the array resolution and instantiation path is ever taken
  • RVM-808 - OutOfMemoryError when allocating a 200 MB tab
  • RVM-811 - Immix: "Chunk map overflow" on jbb2005 ppc64-linux
  • RVM-814 - Wrong exception from Java reflection
  • RVM-828 - Do not search superclasses for a method unless no method is found.


  • RVM-91 - Modularize threading system (native thread support)
  • RVM-283 - Increase frequency of timer-based method sampling
  • RVM-362 - Sort accumulating operands on to LHS of commutative operations
  • RVM-462 - Immix code still contains huge number of experimental variables
  • RVM-532 - Harmony's OSMemory implementation uses JNI
  • RVM-612 - Assertion checking on stack height in baseline compiler
  • RVM-689 - Update MMTk tutorial
  • RVM-709 - Document meaning of constants in build reference maps
  • RVM-725 - Increase command line options for tuning opt compiler behaviour
  • RVM-736 - Disable ImmutableEntryHashSetRVM.remove()
  • RVM-737 - Support local variable table for methods
  • RVM-739 - Made org.jikesrvm.compilers.opt.util.Pair generic and moved it to package org.jikesrvm.util
  • RVM-740 - Support for floating point conditional moves on Intel with SSE
  • RVM-741 - Support for negation and abs() using SSE2 bit masks
  • RVM-775 - Cleanup up code that obtains targets of pseudo_invokestatic instruction
  • RVM-791 - Clean up and modularize locking
  • RVM-801 - Minor change: Reorganize ClassFileReader by moving code for reading in the constant pool into a separate function
  • RVM-803 - Use for-each loop in RVMClass wherever possible

Tasks and Sub-tasks

  • RVM-817 - Change Jikes RVM license from Common Public License to Eclipse Public License
  • RVM-685 - Implement x86 64 JNI Compiler
  • RVM-751 - Implement PowerPC syscalls
  • RVM-759 - Stack maps seem to be broken
  • RVM-779 - Update userguide to decribe native threads
  • RVM-783 - Fix baseline Intel 64bit reference maps
  • RVM-786 - Adjust sampling mechanism in AOS to account for native threads
  • RVM-787 - Outline exception raising code in gnu.java.lang.CPStringBuilder to enable better inlining
  • RVM-29 - Track website traffic via sourceforge logo requests

Please vote in the online poll: http://www.doodle.com/qtb3sm9k42wbxs9q

Polling will be open until March 19, 2009.