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