RFR 8209626: [JVMCI] Use implicit exception table for dispatch and printing
Tom Rodriguez
tom.rodriguez at oracle.com
Wed Dec 12 18:42:04 UTC 2018
http://cr.openjdk.java.net/~never/8209626/webrev
https://bugs.openjdk.java.net/browse/JDK-8209626
Graal handles implicit exceptions by deoptimizing and that's currently
done in a way that's hard to understand from the PrintNMethods output.
Basically there's just an extra PcDesc at the implicit check location
and the runtime assumes that a fault with a PcDesc underneath it an
implicit check. This changes JVMCI to use the implicit exception table
to mark these locations specially which simplifies the dispatching and
printing. The new print output looks like this:
0x0000000120f053a0: mov DWORD PTR [rsp-0x14000],eax
0x0000000120f053a7: sub rsp,0x18
0x0000000120f053ab: mov QWORD PTR [rsp+0x10],rbp ;*aload_0
{reexecute=1 rethrow=0 return_oop=0}
; -
java.lang.StringLatin1::equals at 0 (line 94)
0x0000000120f053b0: mov eax,DWORD PTR [rsi+0xc] ; implicit
exception: deoptimizes
;
ImmutableOopMap{rdx=Oop rsi=Oop }
;*aload_0
{reexecute=1 rethrow=0 return_oop=0}
; -
java.lang.StringLatin1::equals at 0 (line 94)
0x0000000120f053b3: mov r10d,DWORD PTR [rdx+0xc] ; implicit
exception: deoptimizes
;
ImmutableOopMap{rdx=Oop rsi=Oop }
The scope information is still printed in the normal original location.
This has been in use with JVMCI 8 for several months.
tom
More information about the hotspot-compiler-dev
mailing list