We're very proud to announce that Jikes RVM version 2.9.1 is now available for download. There's been quite a bit of activity on the project since 2.9.0, and all kinds of good reasons to move up to this new version of Jikes RVM!
The release is available at http://downloads.sourceforge.net/jikesrvm/jikesrvm-2.9.1.tar.bz2.
Jikes RVM 2.9.1 Release Notes (July 2, 2007)
A major stability drive has resulted in Jikes RVM being able to reliably run the entire DaCapo benchmark suite on ia32-linux. The following issues were resolved to make this possible:
- multiple benchmarks:
- r12809: Missed lock prefix (stack scanning failures).
- r12737: GC map iterator crashed on dynamic link frames.
- r12302: Classpath RandomAccessFile incorrectly truncated.
- r12394: PLOS exhaustion bug in MMTk.
- r12375: ThinLock of interface from OPT code.
- r12815: Bad GC map in JNI methods.
- r12722: Fix for GC map bugs around expection throws.
- r12602: Floating point precision (SSE2).
- r12633: Parallel hardware traps.
- r12683: Invalid assertion in VM_Thread.
- r12742: Missing static initializer broke jar caching (halves runtime).
- r12753: FileOutputStream wastefully copying arrays (halves runtime).
New eclipse-project ant target to make it easy to get up and running in eclipse.
As part of the stability drive, many O2 optimizations in the optimizing compiler have been moved to O3 (and thus are not enabled by default). The performance impact of this has been mixed. For example, on ia32-linux SPECjvm98 performance actually improved by 29% due to massive improvements in mtrt and mpegaudio enabled by SSE2. Performance on SPECjbb2005 degraded by 3-10%. There were significant gains on some individual DaCapo benchmarks (most notably xalan). Re-building an aggressive O2 optimization package by stabilizing current O3 optimizations and by building new optimization passes will be one of the focus areas for the project going forward.
The recommended version of GNU classpath is 0.95. Earlier versions of GNU classpath are not supported.
SSA expression folding has been expanded to cover far more cases than previously. This leads to a > 1% speedup on benchmarks such as SpecJBB'05.
Source code analysis of the code base has been enabled using PMD (http://pmd.sourceforge.net/). Basic analysis is enabled by default and this will expand over time.
Methods in VM_Type that duplicated functionality in VM_TypeReference now delegate to associated VM_TypeReference.
The ability to force a garbage collection after N allocations or at every exception delivery has been revived and is controlled by the configuration variable config.stress-gc-interval which should be set to non-zero value to enable.
Simplistic debug symbols to show boot image method entry points in gdb. Resolved issues with rvm script so this works with rvm -gdb now.
New faster primary regression machine (Core 2 Duo) for ia32-linux at ANU. Resolved performance issues with previous regression machine.
Introduced the capability to patch against classpath versions. This allows us to keep backported performance optimizations and/or bug fixes.
Implementation of returning global JNI references from C to Java.
VM_ prefix added to classes that must be included in the primordial class list. Classes affected include; PrintLN, PrintContainer, ApplicationClassLoader, DebuggerThread, FinalizerThread, MainThread, PPC_Disassembler, opcode_tab and opcodeXX.
Classes in the adaptive package have been reorganized into packages to match the directory layout in 2.4.6 release.
Classes that resided in the objectmodel directory in 2.4.6 have been moved in to the "org.jikesrvm.objectmodel" package.
Classes that resided in the scheduler directory in 2.4.6 have been moved in to the "org.jikesrvm.scheduler" package.
Classes that resided in the runtime directory in 2.4.6 have been moved in to the "org.jikesrvm.runtime" package.
Baseline GC map bug for handler blocks affecting SPECjbb2000 (r12685).
Classpath race in cloning of XML Node affecting SPECjbb2005 (r12395).
Fix final field chasing in OPT_Simplifier and re-enable constant folding for fields.
A GC map generation problem caused by casting Address to Objects and has been eliminated.