RFR: 8173100: AArch64: -XX:-UseOnStackReplacement does not work together with -XX:+TieredCompilation.

Ningsheng Jian ningsheng.jian at linaro.org
Thu Mar 15 07:42:19 UTC 2018

(Resend of [1])


Please help to review this fix.

Bug: https://bugs.openjdk.java.net/browse/JDK-8173100
Webrev: http://cr.openjdk.java.net/~njian/8173100/webrev.01/

JDK-8159620 included a test case
compiler/interpreter/DisableOSRTest.java which exposes the same issue
on AArch64. Basically, if we specify -XX:-UseOnStackReplacement and
-XX:+TieredCompilation (default) options, there are still OSR
compilations found.

The root cause is that, even with -UseOnStackReplacement, interpreter
will still count the backedge and jump to backedge_counter_overflow to
request an OSR compilation.

With correct label passed to increment_mask_and_jump, it will either
jump to OSR or dispatch to next target instruction. This fix also
covers an old fix of [2] and makes the code align with x86 code (On
x86, the increment_mask_and_jump just jumps to the next instruction if
backedge_counter_overflow is not generated, so no such issue then.)

JTreg tests passed.

[1] http://mail.openjdk.java.net/pipermail/aarch64-port-dev/2017-January/004119.html
[2] http://mail.openjdk.java.net/pipermail/aarch64-port-dev/2014-February/000764.html


More information about the hotspot-compiler-dev mailing list