Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-8367066

RISC-V: refine register selection in MacroAssembler:: decode_klass_not_null

XMLWordPrintable

    • b15
    • riscv

        Previously, the register selection in MacroAssembler:: decode_klass_not_null is misleading, better to refine it.

        diff --git a/src/hotspot/cpu/riscv/macroAssembler_riscv.cpp b/src/hotspot/cpu/riscv/macroAssembler_riscv.cpp
        index 1436bc02113..06186079cf8 100644
        --- a/src/hotspot/cpu/riscv/macroAssembler_riscv.cpp
        +++ b/src/hotspot/cpu/riscv/macroAssembler_riscv.cpp
        @@ -3421,8 +3421,9 @@ void MacroAssembler::decode_klass_not_null(Register dst, Register src, Register
           mv(xbase, (uintptr_t)CompressedKlassPointers::base());
         
           if (CompressedKlassPointers::shift() != 0) {
        - Register t = src == dst ? dst : t0;
        + Register t = dst == xbase ? t0 : dst;
             assert_different_registers(t, xbase);
        + // dst = (src << shift) + xbase
             shadd(dst, src, xbase, t, CompressedKlassPointers::shift());
           } else {
             add(dst, xbase, src);

              mli Hamlin Li
              mli Hamlin Li
              Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

                Created:
                Updated:
                Resolved: