RFR: 8359359: AArch64: share trampolines between static calls to the same method

Leonid Mesnik lmesnik at openjdk.org
Mon Jun 30 22:55:38 UTC 2025


On Tue, 24 Jun 2025 15:38:00 GMT, Mikhail Ablakatov <mablakatov at openjdk.org> wrote:

> Modify the C2 compiler to share trampoline stubs between static calls that resolve to the same callee method. Since the relocation target for all static calls is initially set to the static call resolver stub, the call's target alone cannot be used to distinguish between different static method calls. Instead, trampoline stubs should be shared based on the actual callee.
> 
> The `SharedTrampolineTest.java` was designed to verify the sharing of trampolines among static calls. However, due to imprecise log analysis, the test currently passes even when trampolines are not shared. Additionally, comments within the test suggest ambiguity regarding whether it was intended to assess trampoline sharing for static calls or runtime calls. To address these issues and eliminate ambiguity, this patch renames and updates the existing test. Furthermore, a new test is introduced, using the existing one as a foundation, to accurately evaluate trampoline sharing for both static and runtime calls.
> 
> This has passed tier1-3 and jcstress testing on AArch64.

Changes requested by lmesnik (Reviewer).

test/hotspot/jtreg/compiler/sharedstubs/SharedStaticCallTrampolineTest.java line 33:

> 31:  *
> 32:  * @requires vm.compiler2.enabled
> 33:  * @requires vm.opt.TieredCompilation == null

I don't think
@requires vm.opt.TieredCompilation == null
is needed here.
Test always overrides TieredCompilation mode. 

The problem is that the test is going to be skipped if someone run testing with -XX:-TieredCompilation to test C2 changes. Please just remove this line so test is executed anytime if C2 is available.

The renamed test 'SharedRuntimeCallTrampolineTest' seems to have this problem also.

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

PR Review: https://git.openjdk.org/jdk/pull/25954#pullrequestreview-2972999150
PR Review Comment: https://git.openjdk.org/jdk/pull/25954#discussion_r2176106769


More information about the hotspot-dev mailing list