RFR: 8253920: Share method trampolines in CDS dynamic archive

Calvin Cheung ccheung at openjdk.java.net
Mon Oct 26 20:37:21 UTC 2020


On Mon, 26 Oct 2020 18:35:30 GMT, Yumin Qi <minqi at openjdk.org> wrote:

>> This patch is to allow sharing of the same method trampoline for archived Methods with the same AdapterHandleEntry when using CDS dynamic archive. 
>> 
>> Running javac on HelloWorld with CDS dynamic archive, the number of calls to SharedRuntime::generate_trampoline() is reduced to 406 times vs 12601 times without the patch.
>> 
>> In terms of saving on instructions and time (on linux-x64):
>> instr delta =     -2807662    -0.1369%
>> time  delta =       -6.860 ms -1.8798%
>> 
>> It passed tiers 1,2,3,4 testing.
>
> src/hotspot/share/oops/method.cpp line 1111:
> 
>> 1109: 
>> 1110:   assert(_from_compiled_entry != NULL, "sanity");
>> 1111:   if (DumpSharedSpaces) {
> 
> I think you can remove this if check.

No, I can't remove the check. It doesn't work with the DynamicDumpSharedSpaces case. Note that the conditions of the assert statements are the same as the original code.

-------------

PR: https://git.openjdk.java.net/jdk/pull/868


More information about the hotspot-runtime-dev mailing list