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