RFR(XS): JDK-8010941: MinJumpTableSize is set to 18, investigate if that's still optimal

Niclas Adlertz niclas.adlertz at oracle.com
Thu Sep 5 05:41:56 PDT 2013

Hi all.

Sorry for the delay.

I've written a JMH test[0] and the results[1] differs from what I previously got. Because of this, I propose the new MinJumpTableSize number to be 10.

WEBREV: http://cr.openjdk.java.net/~adlertz/JDK-8010941/webrev01/



Kind Regards,
Niclas Adlertz

On 22 maj 2013, at 00:48, Aleksey Shipilev <aleksey.shipilev at oracle.com> wrote:

> On 05/21/2013 10:17 PM, Vladimir Kozlov wrote:
>> We usually do about 20000 iterations and run with -Xbatch to make sure
>> tested method is compiled before time measurement.
> Yeah, that works if the benchmark is the single method call. Anything
> more complex require more complex warmup.
>>> Also, I begin to wonder if after the multiply_by_power_of_ten inlining
>>> start to affect how far we unroll the loop, since the jump tables are
>>> starting to be larger.
>> You can avoid it by
>> -XX:CompileCommand=dontinline,Test::multiply_by_power_of_ten
> Or, (chanting) use JMH:
> http://hg.openjdk.java.net/code-tools/jmh/file/tip/jmh-samples/src/main/java/org/openjdk/jmh/samples/JMHSample_16_CompilerControl.java
> Or, (chanting again) use JMH, because it does not really use indexed
> loops, but rather volatile-predicated loop, so the loop unrolling is
> ineffective (double ineffective with the source data re-read from the
> fields on every iteration).
> Before you jump on other platforms, look into the assembly to see if
> your benchmark are actually generate the code that makes sense (i.e.
> trapped on any of the issues Vladimir and me had speculated here):
> https://wiki.openjdk.java.net/display/HotSpot/PrintAssembly
> -Aleksey.

More information about the hotspot-compiler-dev mailing list