[aarch64-port-dev ] RFR(S): 8237483: AArch64 C1 OopMap inserted twice fatal error
Andrew Haley
aph at redhat.com
Tue Jul 28 08:34:24 UTC 2020
On 7/28/20 6:56 AM, Nick Gasson wrote:
> Seems a bit too verbose? How about this:
>
> --- a/src/hotspot/cpu/aarch64/c1_LIRAssembler_aarch64.cpp
> +++ b/src/hotspot/cpu/aarch64/c1_LIRAssembler_aarch64.cpp
> @@ -2085,6 +2085,13 @@ void LIR_Assembler::throw_op(LIR_Opr exceptionPC, LIR_Opr exceptionOop, CodeEmit
>
> // get current pc information
> // pc is only needed if the method has an exception handler, the unwind code does not need it.
> + if (compilation()->debug_info_recorder()->last_pc_offset() == __ offset()) {
> + // As no instructions have been generated yet for this LIR node it's
> + // possible that an oop map already exists for the current offset.
> + // In that case insert an dummy NOP here to ensure all oop map PCs
> + // are unique. See JDK-8237483.
> + __ nop();
> + }
OK. I wonder if this bug exists in other ports. They too deoptimize
C1 code, albeit more rarely.
--
Andrew Haley (he/him)
Java Platform Lead Engineer
Red Hat UK Ltd. <https://www.redhat.com>
https://keybase.io/andrewhaley
EAC8 43EB D3EF DB98 CC77 2FAD A5CD 6035 332F A671
More information about the hotspot-compiler-dev
mailing list