mirror of
https://github.com/openjdk/jdk.git
synced 2026-07-25 18:33:08 +00:00
8388173: Shenandoah: Overly strict assertion failure in CAS barrier
Reviewed-by: shade, xpeng
This commit is contained in:
parent
0efadf5f54
commit
189dde7dfe
@ -705,10 +705,9 @@ void ShenandoahBarrierSetAssembler::compare_and_set_c2(const MachNode* node, Mac
|
||||
|
||||
assert(oldval == rax, "must be in rax for implicit use in cmpxchg");
|
||||
|
||||
// Oldval and newval can be in the same register, but all other registers should be
|
||||
// distinct for extra safety, as we shuffle register values around.
|
||||
assert_different_registers(oldval, tmp, addr.base(), addr.index());
|
||||
assert_different_registers(newval, tmp, addr.base(), addr.index());
|
||||
// Oldval and newval cannot be clobbered by aliasing with tmp.
|
||||
assert_different_registers(oldval, tmp);
|
||||
assert_different_registers(newval, tmp);
|
||||
|
||||
ShenandoahBarrierStubC2::load_store_pre(masm, node, addr, tmp, noreg, noreg, narrow);
|
||||
|
||||
@ -729,7 +728,7 @@ void ShenandoahBarrierSetAssembler::compare_and_set_c2(const MachNode* node, Mac
|
||||
}
|
||||
|
||||
void ShenandoahBarrierSetAssembler::get_and_set_c2(const MachNode* node, MacroAssembler* masm, Register newval, Address addr, Register tmp, bool narrow) {
|
||||
assert_different_registers(newval, tmp, addr.base(), addr.index());
|
||||
assert_different_registers(newval, tmp);
|
||||
|
||||
ShenandoahBarrierStubC2::load_store_pre(masm, node, addr, tmp, noreg, noreg, narrow);
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user