RFR: 8296630: Fix SkipIfEqual on AArch64 and RISC-V

Andrew Haley aph at openjdk.org
Thu Nov 10 14:09:10 UTC 2022


On Thu, 10 Nov 2022 03:17:37 GMT, Yadong Wang <yadongwang at openjdk.org> wrote:

> SkipIfEqual was supposed to load a flag value from some memory, compare it with a input boolean value, and jump to a specific label they a equals. The implementation on x86 and s390 platforms meets expectations, and ppc uses SkipIfEqualZero. However, on AArch64 and RISC-V platforms, the input argument "value" is not used, and jumping-if-equal-zero is generated only. That's not correct, but works well since only false passed on all call sites so far.
> 
> AArch64 tier1, riscv hotspot & jdk tier1 have been tested.
> Additional cases with dtrace tested on AArch64:
> test/hotspot/jtreg/serviceability/dtrace/DTraceOptionsTest.java
> test/hotspot/jtreg/compiler/runtime/Test8168712.java

src/hotspot/cpu/aarch64/macroAssembler_aarch64.cpp line 3984:

> 3982:     _masm->cbnzw(rscratch1, _label);
> 3983:   }
> 3984: }

Suggestion:

  if (value) {
    _masm->cbnzw(rscratch1, _label);
  } else {
    _masm->cbzw(rscratch1, _label);
  }
}

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

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


More information about the hotspot-dev mailing list