diff --git a/src/hotspot/cpu/riscv/gc/shenandoah/shenandoahBarrierSetAssembler_riscv.cpp b/src/hotspot/cpu/riscv/gc/shenandoah/shenandoahBarrierSetAssembler_riscv.cpp index b6002e6b7e4..ae394d7d8d7 100644 --- a/src/hotspot/cpu/riscv/gc/shenandoah/shenandoahBarrierSetAssembler_riscv.cpp +++ b/src/hotspot/cpu/riscv/gc/shenandoah/shenandoahBarrierSetAssembler_riscv.cpp @@ -469,6 +469,8 @@ void ShenandoahBarrierSetAssembler::try_resolve_jobject_in_native(MacroAssembler #ifdef COMPILER2 void ShenandoahBarrierSetAssembler::try_resolve_weak_handle_in_c2(MacroAssembler *masm, Register obj, Register tmp, Label& slow_path) { + assert_different_registers(obj, tmp); + Label done; // Resolve weak handle using the standard implementation. @@ -477,7 +479,6 @@ void ShenandoahBarrierSetAssembler::try_resolve_weak_handle_in_c2(MacroAssembler // Check if the reference is null, and if it is, take the fast path. __ beqz(obj, done); - assert(obj != tmp, "need tmp"); Address gc_state(xthread, ShenandoahThreadLocalData::gc_state_offset()); __ lbu(tmp, gc_state); diff --git a/src/hotspot/cpu/riscv/gc/z/zBarrierSetAssembler_riscv.cpp b/src/hotspot/cpu/riscv/gc/z/zBarrierSetAssembler_riscv.cpp index f2453af19d7..163271a2f11 100644 --- a/src/hotspot/cpu/riscv/gc/z/zBarrierSetAssembler_riscv.cpp +++ b/src/hotspot/cpu/riscv/gc/z/zBarrierSetAssembler_riscv.cpp @@ -610,7 +610,9 @@ void ZBarrierSetAssembler::try_resolve_weak_handle_in_c2(MacroAssembler* masm, R BarrierSetAssembler::try_resolve_weak_handle_in_c2(masm, obj, tmp, slow_path); // Check if the oop is bad, in which case we need to take the slow path. - __ ld(tmp, mark_bad_mask_from_thread(xthread)); + __ relocate(barrier_Relocation::spec(), [&] { + __ li16u(tmp, barrier_Relocation::unpatched); + }, ZBarrierRelocationFormatMarkBadMask); __ andr(tmp, obj, tmp); __ bnez(tmp, slow_path);