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