RFR: 8359359: AArch64: share trampolines between static calls to the same method [v7]
Mikhail Ablakatov
mablakatov at openjdk.org
Thu Oct 30 15:41:38 UTC 2025
On Thu, 30 Oct 2025 11:45:33 GMT, Evgeny Astigeevich <eastigeevich at openjdk.org> wrote:
>> Mikhail Ablakatov has updated the pull request with a new target base due to a merge or a rebase. The pull request now contains 15 commits:
>>
>> - share static call trampolines generated by C1 as well
>> - assert callee is nullptr for runtime calls
>> - assert that call sites offsets aren't missing
>> - cleanup: rephrase comments in macroAssembler_aarch64.hpp
>> - Merge commit 'fd29677479797956e0d205b5ce6e7cb9ad407bd1' into 8359359
>> - Merge commit '41520998aa8808452ee384b213b2a77c7bad668d'
>> - remove implementation-dependent logic from emit_shared_trampolines()
>> - cleanup: update copyright headers
>> - Make the value type of the dictionary a struct instead of Pair typedef
>> - Remove share_rc_trampoline_for and share_sc_trampoline_for
>> - ... and 5 more: https://git.openjdk.org/jdk/compare/fd296774...e3ad440b
>
> src/hotspot/cpu/aarch64/c1_LIRAssembler_aarch64.cpp line 1987:
>
>> 1985:
>> 1986: void LIR_Assembler::call(LIR_OpJavaCall* op, relocInfo::relocType rtype) {
>> 1987: address call = __ trampoline_call(Address(op->addr(), rtype), op->method());
>
> Here we can exclude `lir_dynamic_call` ops:
>
> // Targets of dynamic calls depend on the call site info.
> // They can be resolved to different method at the time of a call.
> ciMethod* method = (op->code() == lir_dynamic_call) : nullptr ? op->method();
> address call = __ trampoline_call(Address(op->addr(), rtype), method);
Would it be correct to use `op->method()->can_be_statically_bound()` instead, similarly to how it's done for static call stubs in https://github.com/openjdk/jdk/blob/ed36b9bb6f3d429db6accfb3b096e50e7f2217ff/src/hotspot/share/c1/c1_LIRAssembler.cpp#L456?
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/25954#discussion_r2478587101
More information about the hotspot-dev
mailing list