RFR 8209626: [JVMCI] Use implicit exception table for dispatch and printing

Tom Rodriguez tom.rodriguez at oracle.com
Thu Dec 13 07:22:43 UTC 2018



Vladimir Kozlov wrote on 12/12/18 2:29 PM:
> On 12/12/18 1:06 PM, Tom Rodriguez wrote:
>> They all look like preexisting failures to me.  The 
>> CheckGraalIntrinsics one you mentioned in chat and 
> 
> yes
> 
>> compiler/aot/DeoptimizationTest.java which seems to have been failing 
>> at least intermittently for a while.  What do you think?
> 
> SIGFPE is new. And I think your changes in sharedRuntime.cpp may 
> affected execution of AOT methods because they are marked as compiled by 
> Graal (compiler_jvmci):
> 
> http://hg.openjdk.java.net/jdk/jdk/file/9e28eff3d40f/src/hotspot/share/aot/aotCompiledMethod.hpp#l131 

Yes I think I need to move some code around to properly support AOT. 
I'll send out an updated webrev soon but I think we can defer this one 
until jdk 13.

tom

> 
> 
> Vladimir
> 
>>
>> It does make me wonder if AOT needs any extra support to use the 
>> implicit exception table.  I would assume we'd be seeing problems if 
>> that was the case but don't really know.
>>
>> tom
>>
>> Vladimir Kozlov wrote on 12/12/18 11:12 AM:
>>> Tom,
>>>
>>> Some tests failed.
>>>
>>> Thanks,
>>> Vladimir
>>>
>>> On 12/12/18 10:42 AM, Tom Rodriguez wrote:
>>>> 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