RFR: 8318609: Upcall stubs should be smaller [v4]
Martin Doerr
mdoerr at openjdk.org
Mon Oct 23 15:11:46 UTC 2023
> 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.
-------------
Changes:
- all: https://git.openjdk.org/jdk/pull/16290/files
- new: https://git.openjdk.org/jdk/pull/16290/files/7f4c95e2..13aa2fec
Webrevs:
- full: https://webrevs.openjdk.org/?repo=jdk&pr=16290&range=03
- incr: https://webrevs.openjdk.org/?repo=jdk&pr=16290&range=02-03
Stats: 1 line in 1 file changed: 0 ins; 1 del; 0 mod
Patch: https://git.openjdk.org/jdk/pull/16290.diff
Fetch: git fetch https://git.openjdk.org/jdk.git pull/16290/head:pull/16290
PR: https://git.openjdk.org/jdk/pull/16290
More information about the hotspot-compiler-dev
mailing list