RFR: 8295110: RISC-V: Mark out relocations as incompressible

Xiaolin Zheng xlinzheng at openjdk.org
Fri Oct 14 03:00:59 UTC 2022


On Wed, 12 Oct 2022 06:40:04 GMT, Fei Yang <fyang at openjdk.org> wrote:

>> This patch marks all relocations incompressible as pre-discussions at [1] and converts instructions to their 2-byte compressible counterparts as much as possible when UseRVC is enabled.
>> 
>> Chaining PR #10421.
>> 
>> 1. Code size reduction rate: about ~17% now after this patch under RVC, meaning if there's a piece of code of 1000 bytes, it may shrink to 830 bytes when RVC is enabled. [2]
>> 2. Performance: conservatively no regressions observed. [3]
>> 
>> The overloaded `relocate()` methods hide `IncompressibleRegion`s inside, to exclude instructions used at relocations from being compressed.
>> 
>> 
>> Having tested several times hotspot tier1~tier4; Testing another turn on board.
>> 
>> 
>> 
>> [1] https://mail.openjdk.org/pipermail/riscv-port-dev/2022-September/000615.html
>> [2] https://mail.openjdk.org/pipermail/riscv-port-dev/2022-September/000633.html
>> [3] https://mail.openjdk.org/pipermail/riscv-port-dev/2022-October/000656.html
>
> Personally, I prefer the following style:
> 
>   __ relocate(spec, [&] {
>       int32_t off = 0;
>       la_patchable(t0, RuntimeAddress(entry), off);
>       jalr(x1, t0, off);
>   });
> 
> Then the code looks more unified to me. And we don't need to extend a new la_patchable interface.

Thanks for reviewing! @RealFYang @yadongw 

Will wait for #10697 to be merged first for it seems needs a redo if mine goes first.

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

PR: https://git.openjdk.org/jdk/pull/10643


More information about the hotspot-dev mailing list