Reduced performance in Java 9.0.1 (vs 8u152)

Andrew Haley aph at
Tue Jan 2 10:07:49 UTC 2018

On 02/01/18 09:37, Dawid Weiss wrote:
>> do with a different unrolling strategy which perhaps leads to more
>> spilling.  8u152 has a tighter inner loop. It's just one of those
>> things which happens sometimes with JIT compilers, IMO.  G1 is a red
>> herring.
> I don't have enough knowledge of JIT internals to argue, but my
> experience and real-life software
> runs clearly show the difference Martin mentioned within a single JVM version.
> JDK, GC, Time
> 8, g1, 3h 25m
> 8, par (default), 3h 0m
> Again -- this is a particular result, but they're very repeatable and
> the average/ variance is definitely
> not accidental.

I'm only looking at the posted assembler code.  I can't see any
barriers.  However, the fact that there are barriers in the code we're
not looking at will affect register allocation, especially on a
machine as register starved as x86, so changing the GC will affect
even code which doesn't do anything GC related.  All it has to do is
use one more register, and that can cause a storm of spilling.

It would help a lot of someone posted the assembler code from a debug

Andrew Haley
Java Platform Lead Engineer
Red Hat UK Ltd. <>
EAC8 43EB D3EF DB98 CC77 2FAD A5CD 6035 332F A671

More information about the hotspot-compiler-dev mailing list