As some people may have noticed in the release notes of the last IcedTea release (2.2), Zero has become broken. This is because Zero does not yet support some of the changes made in HotSpot 23 and later. Chris Phillips and Andrew Haley at Red Hat, now joined by Roman Kennke as well, are hard at work on fixing this as quickly as possible. In the interim, we’re providing a temporary solution which will at least get Zero working again, if not with all the new features of HotSpot 23 & 24.

In this changeset, I updated IcedTea to download the HotSpot from the 2.1 branch instead, when Zero is enabled. Unfortunately, this doesn’t work out of the box. Although HotSpot is designed to be backwards compatible with older JDKs, the reverse is not true, so a number of backports were necessary to get it working. Namely:

While the first three were fairly obvious (the build fails because it can’t link against JVM_SetNativeThreadName), the String issue resulted in quite a bit of debugging as the JDK would build, but crash immediately on initialisation, which turned out to be when it was creating String instances for properties using the platform character set.

You can try out Zero now by checking out IcedTea7 HEAD and building using the --enable-zero option. You should end up with something like:

java version "1.7.0_06"
OpenJDK Runtime Environment (IcedTea7 2.3pre+r7d3000c44b3b+)
OpenJDK 64-Bit Zero VM (build 22.0-b10, interpreted mode)

It was able to build itself and passed most HotSpot jtreg tests (available by make check-hotspot). The ones that didn’t pass timed out, presumably due to Zero’s slow speed. So Zero will work again in 2.3, using this support, and hopefully in the future, we’ll be able to have Zero on more recent HotSpot versions.

Footnote: I’ve just found out, via a blog linkback, that Slackware package IcedTea. Always good to know where our work ends up!