[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