[aarch64-port-dev ] RFR(S): 8237483: AArch64 C1 OopMap inserted twice fatal error
Nick Gasson
nick.gasson at arm.com
Mon Jul 27 08:50:56 UTC 2020
Hi,
Bug: https://bugs.openjdk.java.net/browse/JDK-8237483
Webrev: http://cr.openjdk.java.net/~ngasson/8237483/webrev.0/
In the method java.util.zip.Inflater::inflate C1 generates these two LIR
instructions:
724 move [c_rarg3|I] [Base:[c_rarg1|L] Disp: 2147483647|I] [patch_normal] [bci:95]
728 throw [c_rarg3|I] [c_rarg0|L] [bci:100]
The move instruction at 724 generates a runtime call to deoptimise the
method since this patching is not implemented on AArch64. An oop map is
inserted for the return PC of the runtime call
(LIR_Assembler::deoptimize_trap()). The following throw LIR instruction
then inserts another oop map at the same PC, triggering an assertion
failure.
To reproduce:
make test TEST="compiler/c1/CanonicalizeArrayLength.java" \
JTREG="VM_OPTIONS=-Xcomp"
This patch just adds a NOP in this situation to ensure the PCs are
unique. Not sure if there's a better way to do it?
Tested hotspot_all_no_apps, jdk_core.
--
Thanks,
Nick
More information about the aarch64-port-dev
mailing list