Yet more changes to support -sharedclassloader and while I was at FOSDEM I tried running SPECjvm2008 so I did the fixes necessary to get that to run. Note that if you want to run SPECjvm2008, you'll have to generate rt.jar (ikvmstub -shared ikvm.openjdk.core && ren IKVM.OpenJDK.Core.jar rt.jar
) and create an ikvm.exe.config file to set the boot class path to rt.jar:
<?xml version="1.0"?>
<configuration>
<appSettings>
<add key="ikvm:sun.boot.class.path" value="\ikvm\lib\rt.jar" />
</appSettings>
</configuration>
Changes:
- Implemented JPEGImageWriter.getDefaultWriteParam().
- Added dummy implementations for java.awt.Graphics.setComposite/getComposite/getFontRenderContext.
- Added supported for redirecting Runtime.exec("java ...") to ikvm.exe.
- Small performance improvement to stack walking in ObjectInputStream.
- Removed several JIT performance workarounds that are no longer needed as of .NET 2.0 SP2 (aka .NET 3.5 SP1) .
- Added hack to ikvmstub (-shared option) to generate stubs for core class library.
- Imported JMath (John F. Brophy's pure Java port of fdlibm) and use it for most Math functions instead of .NET Math API.
- Made 32 bit floating point math more compatible by rounding to 32 bit after every operation. On x86 this takes a significant performance hit, but without it the differences were too large for the SPECjvm2008 sunflow benchmark to pass.
- Set foreground/background colors for java.awt.Graphics created from Image correctly.
- Added support for setting the JPEG compression level and for custom quantization (but not huffman) tables.
- Moved Y correction to java.awt.Graphics2D float overload of drawString, so that it too positions the text (approx.) correctly.
- Don't overwrite the thread context class loader if it has already been set when sun.misc.Launcher initializes. Thanks to Dawid Weiss for finding this.
As always with a development snapshot, don't use this in production, but please do try it out and let me know about it. The sources are available in cvs and the binaries here: ikvmbin-0.39.3338.zip