RFR: 8318609: Upcall stubs should be smaller [v4]

Richard Reingruber rrich at openjdk.org
Tue Oct 24 09:08:38 UTC 2023


On Mon, 23 Oct 2023 15:11:46 GMT, Martin Doerr <mdoerr at openjdk.org> wrote:

>> We can use `resolve_global_jobject` (introduced by [JDK-8299089](https://bugs.openjdk.org/browse/JDK-8299089)) because we know that the handle is created by `JNIHandles::make_global` in `UL_MakeUpcallStub`. That creates much shorter code.
>> 
>> Size reduced from 1360 bytes to 648 bytes on x64 for a trivial upcall using G1.
>> 1584 bytes to 936 bytes using ShenandoahGC.
>> 1064 bytes to 848 bytes using Generational ZGC.
>> 
>> We can get even smaller size by moving `JNIHandles::resolve(receiver)` into `UpcallLinker::on_entry` (2nd commit):
>> 616 bytes regardless of GC.
>> This was originally proposed here: https://github.com/openjdk/jdk/pull/12708#discussion_r1180394508
>> 
>> Moving exception handling into a shared stub saves a bit more. Got 576 bytes with 3rd commit.
>
> Martin Doerr has updated the pull request incrementally with one additional commit since the last revision:
> 
>   Fix riscv build.

Looks still good to me.
Cheers, Richard.

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

Marked as reviewed by rrich (Reviewer).

PR Review: https://git.openjdk.org/jdk/pull/16290#pullrequestreview-1694359133


More information about the hotspot-compiler-dev mailing list