Review-Request: Fix of JDK-8034775 neglects to account for non-JIT VMs

Severin Gehwolf sgehwolf at
Mon Apr 28 11:42:02 UTC 2014


Bug: JI-9011998 (I don't seem to be able to create JDK bugs)

The fix for JDK-8034775 introduced a start-up check requiring the number
of compiler threads to be >= 1, which does not make sense for non-JIT
VMs such as the zero JVM variant. This causes zero JVMs to fail
initialization with:

CICompilerCount of 0 is invalid; must be at least 1
Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.

This is caused by a wrong start-up check in
src/share/vm/runtime/arguments.cpp where a minimal value of 1 is
required no matter the JVM variant.

The proposed fix uses the defined CI_COMPILER_COUNT pre-processor
constant over a static 1 to pass to verify_min_value(). Since
CI_COMPILER_COUNT is going to be defined differently for JVM variants it
will make the lower water mark check correct for all JVM variants.

There was an error in defining CI_COMPILER_COUNT as well. On line 196 in
src/share/vm/runtime/globals.hpp CI_COMPILER_COUNT is defined to be 0
(since COMPILER1, COMPILER2 and SHARK are not defined for a Zero build.
Then on line 201 in src/share/vm/runtime/globals.hpp the "else" branch
of ifdef COMPILER2 is entered and the earlier definition of
CI_COMPILER_COUNT (with value 0) overridden to 1.

I've amended test/compiler/startup/ so as to
verify that the lower water mark for Zero JVMs is 0.



More information about the hotspot-dev mailing list