[11] 8207383: [Graal] SelfChangedCDS.java fails with "guarantee(disp == (intptr_t)(jint)disp) failed: must be 32-bit offset"

dean.long at oracle.com dean.long at oracle.com
Sun Jul 22 04:57:28 UTC 2018


On 7/21/18 5:37 PM, Vladimir Kozlov wrote:
> To be clear. We don't use far call for AOT because in AOT code we call 
> through trampoline anyway. Right?

Yes, we call through a "PLT".

>
> My question is do we do that for all calls? Or only runtime calls?
>

I believe we call through the PLT for everything except calls to code 
that we know is in the AOT library, like Graal-generated stubs.
This is a direct call:

     2883:       e8 98 1a 00 00          callq  4320 
<Stub<ExceptionHandlerStub.exceptionHandler>>

This calls through a PLT:

     2c17:       e8 b4 15 00 00          callq  41d0 
<M1_759_java.lang.invoke.MethodHandle.asType(Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/MethodHandle;_plt.entry>

Finally, we use trampolines when an nmethod needs to make a far call to 
AOT code.

dl

> Thanks,
> Vladimir
>
> On 7/21/18 11:52 AM, dean.long at oracle.com wrote:
>> https://bugs.openjdk.java.net/browse/JDK-8207383
>> http://cr.openjdk.java.net/~dlong/8207383/webrev/
>>
>> This fixes a regression caused by JDK-8181855.  The fix is to use a 
>> scratch register to make far calls, but force a near call for AOT.
>>
>> Changeset based on contribution by Tom Rodriguez.
>>
>> dl



More information about the hotspot-compiler-dev mailing list