8231583: Shenandoah: Fix register clash in SBSA::resolve_forwarding_pointer() borrowing
Reviewed-by: rkennke
This commit is contained in:
parent
722b4b4fda
commit
8a50aa7d21
@ -211,9 +211,14 @@ void ShenandoahBarrierSetAssembler::resolve_forward_pointer_not_null(MacroAssemb
|
||||
if (borrow_reg) {
|
||||
// No free registers available. Make one useful.
|
||||
tmp = rscratch1;
|
||||
if (tmp == dst) {
|
||||
tmp = rscratch2;
|
||||
}
|
||||
__ push(RegSet::of(tmp), sp);
|
||||
}
|
||||
|
||||
assert_different_registers(tmp, dst);
|
||||
|
||||
Label done;
|
||||
__ ldr(tmp, Address(dst, oopDesc::mark_offset_in_bytes()));
|
||||
__ eon(tmp, tmp, zr);
|
||||
|
@ -271,9 +271,14 @@ void ShenandoahBarrierSetAssembler::resolve_forward_pointer_not_null(MacroAssemb
|
||||
if (borrow_reg) {
|
||||
// No free registers available. Make one useful.
|
||||
tmp = LP64_ONLY(rscratch1) NOT_LP64(rdx);
|
||||
if (tmp == dst) {
|
||||
tmp = LP64_ONLY(rscratch2) NOT_LP64(rcx);
|
||||
}
|
||||
__ push(tmp);
|
||||
}
|
||||
|
||||
assert_different_registers(dst, tmp);
|
||||
|
||||
Label done;
|
||||
__ movptr(tmp, Address(dst, oopDesc::mark_offset_in_bytes()));
|
||||
__ notptr(tmp);
|
||||
|
Loading…
Reference in New Issue
Block a user