From 55106efee77733c0a57e596ab69c13b6b2c45d2c Mon Sep 17 00:00:00 2001 From: Fredrik Bredberg Date: Mon, 16 Feb 2026 17:20:32 +0100 Subject: [PATCH] Updated for RealFYang --- .../gc/shenandoah/shenandoahBarrierSetAssembler_riscv.cpp | 3 ++- src/hotspot/cpu/riscv/gc/z/zBarrierSetAssembler_riscv.cpp | 4 +++- 2 files changed, 5 insertions(+), 2 deletions(-) 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);