We're very proud to announce that Jikes RVM version 2.9.3 is now available for download! It's been a little bit longer than usual since the last release and there's been quite a bit of activity on the project and improvements to the system. The appended release notes capture many of the highlights; for more details see JIRA.
The release is available from SourceForge.
** Improvement
* [RVM-81] - Annotations in java.lang classes through bytecode engineering
* [RVM-195] - Enable inlining of @Pure methods
* [RVM-274] - Remove OPT_ prefix from all opt compiler classes
* [RVM-276] - opt compiler package structure
* [RVM-304] - Improve performance of character encoder when encoding to and from arrays
* [RVM-305] - Add final annotations to java.io.OutputStreamWriter
* [RVM-308] - Greater use of StringBuilder rather than StringBuffer
* [RVM-309] - Greater use of "<Number>.valueOf" rather than "new <Number>"
* [RVM-310] - Class library fields that could be final aren't final
* [RVM-311] - String toUpperCase and toLowerCase perform a String.equals to see if the Locale is Turkey per invocation
* [RVM-322] - Intel assembler register naming improvement
* [RVM-331] - Implement support for MMX registers
* [RVM-343] - Support for hardware SQRT instruction
* [RVM-344] - Simplifier rule for square root operator
* [RVM-378] - Avoid replicating field and method vectors
* [RVM-379] - Don't replicate OSR_EncodedOSRMaps
* [RVM-381] - Upgrade to Classpath 0.97
* [RVM-385] - Refactor reflection to use VM interface
* [RVM-387] - Baseline compiler emits RegDisp instructions when the Disp is 0
* [RVM-390] - VM_Statics/JTOC space saving has cost us single iteration fop performance
* [RVM-391] - Assign CPU # to each VM_Processor to have more predictable performance results.
* [RVM-392] - Improvements to ZipEntry
* [RVM-395] - Local common sub-expression elimination of Pure method calls
* [RVM-408] - Simple elimination of stack traces
* [RVM-417] - Switch performance runs to using a profiled image
* [RVM-421] - Pre-allocate 1 set of exception registers for athrow
* [RVM-422] - Update to latest Classpath j.u.c.CopyOnWriteArrayList
* [RVM-431] - Fix processor JNI entry/collector rendezvous race
* [RVM-433] - Increase final fields in java.nio
* [RVM-435] - Don't allocate memory when converting C buffers to Strings or Classes
* [RVM-437] - Integer.toString doesn't keep cache of common values
* [RVM-451] - Structure of code in GNU Classpath java.util.Vector and java.util.Arraylist interacts poorly with inlining
** New Feature
* [RVM-210] - Add Image sizes tracking to Regression report and mailout
* [RVM-319] - Create X10 test harness
* [RVM-406] - Add Immix garbage collector
* [RVM-441] - Sticky mark bits collector
* [RVM-457] - Immix Garbage Collectors
* [RVM-266] - Provide preliminary support for a non-copying unsynchronised StringBuffer implementation
** Task and Sub-task
* [RVM-425] - Implement 2d array helper for PPC baseline
* [RVM-224] - Push OSR-specific fields in VM_NormalMethod to subclass/side data structure
* [RVM-450] - Prevent compilation at max opt level before some dynamic call graph information has been gathered
* [RVM-453] - Testing framework missing failures in basic tests that use diff for sanity.
** Bug
* [RVM-196] - VM_Processor not assignable with VM_GreenScheduler
* [RVM-314] - Support for Java 1.4 assertions
* [RVM-315] - java.lang.Method.invoke changes the parameters
* [RVM-316] - A Null pointer for the UTF8CHARSET in java.util.zip.ZipFile$PartialInputStream
* [RVM-326] - Failing basic tests don't signal failure
* [RVM-330] - Thread.sleep() does not handle interrupts correctly
* [RVM-339] - Image bloat (code +25% & data +5%)
* [RVM-340] - Annotations don't handle arrays of primitive types correctly
* [RVM-342] - NPE with advice files
* [RVM-347] - PPC 64 regressions and Intel stress regressions since the introduction of read barriers
* [RVM-351] - Javac regression
* [RVM-352] - Running many iterations of _200_check fails floating point remainder test
* [RVM-353] - Production Opt 0 builds broken
* [RVM-355] - Complete SPEC JVM with 20 iterations dies in GC
* [RVM-357] - Fatal error when synchronising on null objects
* [RVM-365] - PPC (AIX) Stack Scanning Appears Broken
* [RVM-368] - Compiler confusion over equal but non-identical objects
* [RVM-374] - Static field allocation is non-deterministic
* [RVM-380] - We create a lot (15909) optimization plan atomic elements using 572724bytes in the boot image
* [RVM-383] - Branch likely and unlikely prefixes show up as LOCK prefixes in x86 disassembler output
* [RVM-394] - Tune inlining of arraycopy
* [RVM-412] - Latent branch optimization bug when maximizing blocks
* [RVM-424] - Multianewarray confusion in opt compiler
* [RVM-439] - OSR triggering code misuses suspend/resume
* [RVM-447] - Inline size estimation reduction factor calculation over rates precise information causing bloat and slow down
* [RVM-452] - Off-by-one error in "VMField.checkReadAccess" and "VM.checkWriteAccess"
* [RVM-456] - Clean build broken
* [RVM-464] - Opt compiler ldc_w for class literal broken
* [RVM-466] - Four tests in test run "tiny" fail when compiled with -X:aos:initial_compiler=opt -X:aos:enable_recompilation=false
* [RVM-467] - BURS performing illegal reordering to before PEI
* [RVM-468] - Instanceof test differs in opt compiler from baseline for instanceof/checkcast of magic[][]
* [RVM-478] - Redesign AIX native method Linkage conventions to protect CMID field from being smashed by native code saved CR