RFR: 8341893: AArch64: Micro-optimize compressed ptr decoding
Andrew Haley
aph at openjdk.org
Thu Oct 10 09:52:11 UTC 2024
On Thu, 10 Oct 2024 07:57:14 GMT, Aleksey Shipilev <shade at openjdk.org> wrote:
> See the bug for full description. I think there is an accidental inefficiency in decoding: we don't have to shift when shift is zero, but we are tripped by `d != s` check. Other architectures seem to do this right. This fix surgically fixes the decoding. I have a variant of a more comprehensive MacroAssembler fix that could cover this shift-to-mov translation wholesale, but that fix is riskier.
>
> Additional testing:
> - [ ] Linux AArch64 server fastdebug, `tier{1,2,3}`
src/hotspot/cpu/aarch64/macroAssembler_aarch64.cpp line 5017:
> 5015: lsl(d, s, CompressedOops::shift());
> 5016: } else if (d != s) {
> 5017: mov(d, s);
I think `MacroAssembler::mov` already does the `d != s` optimization, but perhaps it's clearer to do it here as well.
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/21443#discussion_r1795086391
More information about the hotspot-dev
mailing list