Skip to content

Commit 0e19ded

Browse files
committed
8255401: Shenandoah: Allow oldval and newval registers to overlap in cmpxchg_oop()
Reviewed-by: roland
1 parent a3aad11 commit 0e19ded

File tree

2 files changed

+4
-2
lines changed

2 files changed

+4
-2
lines changed

src/hotspot/cpu/aarch64/gc/shenandoah/shenandoahBarrierSetAssembler_aarch64.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -477,7 +477,8 @@ void ShenandoahBarrierSetAssembler::cmpxchg_oop(MacroAssembler* masm,
477477
bool is_narrow = UseCompressedOops;
478478
Assembler::operand_size size = is_narrow ? Assembler::word : Assembler::xword;
479479

480-
assert_different_registers(addr, expected, new_val, tmp1, tmp2);
480+
assert_different_registers(addr, expected, tmp1, tmp2);
481+
assert_different_registers(addr, new_val, tmp1, tmp2);
481482

482483
Label step4, done;
483484

src/hotspot/cpu/x86/gc/shenandoah/shenandoahBarrierSetAssembler_x86.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -638,7 +638,8 @@ void ShenandoahBarrierSetAssembler::cmpxchg_oop(MacroAssembler* masm,
638638
bool exchange, Register tmp1, Register tmp2) {
639639
assert(ShenandoahCASBarrier, "Should only be used when CAS barrier is enabled");
640640
assert(oldval == rax, "must be in rax for implicit use in cmpxchg");
641-
assert_different_registers(oldval, newval, tmp1, tmp2);
641+
assert_different_registers(oldval, tmp1, tmp2);
642+
assert_different_registers(newval, tmp1, tmp2);
642643

643644
Label L_success, L_failure;
644645

0 commit comments

Comments
 (0)