RFR: 8280872: Reorder code cache segments to improve code density [v2]
Boris Ulasevich
bulasevich at openjdk.java.net
Thu Mar 3 12:12:02 UTC 2022
On Mon, 28 Feb 2022 18:37:11 GMT, Evgeny Astigeevich <duke at openjdk.java.net> wrote:
>> Boris Ulasevich has updated the pull request with a new target base due to a merge or a rebase. The pull request now contains two commits:
>>
>> - fix name: is_non_nmethod, adding target_needs_far_branch func
>> - change codecache segments order: nonprofiled-nonmethod-profiled
>> increase far jump threshold: sideof(codecache)=128M -> sizeof(nonprofiled+nonmethod)=128M
>
> src/hotspot/cpu/aarch64/icBuffer_aarch64.cpp line 55:
>
>> 53: Label l;
>> 54: __ ldr(rscratch2, l);
>> 55: __ far_jump(ExternalAddress(entry_point), NULL, rscratch1, true);
>
> This complicates `assemble_ic_buffer_code`. You need to know `far_jump` implementation, especially the generation of NOPs. I understand why we need those NOPs.
> Do we have calls of non-nmethod code here?
Yes, there are entry points from both non_method and method segments.
> src/hotspot/cpu/aarch64/macroAssembler_aarch64.cpp line 4379:
>
>> 4377: postcond(pc() == badAddress);
>> 4378: return NULL;
>> 4379: }
>
> I believe replacing `trampoline_call` by `far_call` should be a separate PR.
Ok. I remove this part of the change.
-------------
PR: https://git.openjdk.java.net/jdk/pull/7517
More information about the hotspot-dev
mailing list