< prev index next >
src/cpu/aarch64/vm/c1_LIRAssembler_aarch64.cpp
Print this page
rev 12203 : [mq]: casfixes.patch
*** 1615,1625 ****
cmpval = t1;
assert(op->tmp2()->is_valid(), "must be");
Register t2 = op->tmp2()->as_register();
__ encode_heap_oop(t2, newval);
newval = t2;
! __ cmpxchg_oop_shenandoah(addr, cmpval, newval, Assembler::word, true, true, false);
__ csetw(res, Assembler::EQ);
} else {
__ encode_heap_oop(t1, cmpval);
cmpval = t1;
__ encode_heap_oop(rscratch2, newval);
--- 1615,1625 ----
cmpval = t1;
assert(op->tmp2()->is_valid(), "must be");
Register t2 = op->tmp2()->as_register();
__ encode_heap_oop(t2, newval);
newval = t2;
! __ cmpxchg_oop_shenandoah(addr, cmpval, newval, Assembler::word, /*acquire*/ false, /*release*/ true, /*weak*/ false);
__ csetw(res, Assembler::EQ);
} else {
__ encode_heap_oop(t1, cmpval);
cmpval = t1;
__ encode_heap_oop(rscratch2, newval);
*** 1627,1637 ****
casw(addr, newval, cmpval);
__ eorw (res, r8, 1);
}
} else {
if (UseShenandoahGC) {
! __ cmpxchg_oop_shenandoah(addr, cmpval, newval, Assembler::xword, true, true, false);
__ csetw(res, Assembler::EQ);
} else {
casl(addr, newval, cmpval);
__ eorw (res, r8, 1);
}
--- 1627,1637 ----
casw(addr, newval, cmpval);
__ eorw (res, r8, 1);
}
} else {
if (UseShenandoahGC) {
! __ cmpxchg_oop_shenandoah(addr, cmpval, newval, Assembler::xword, /*acquire*/ false, /*release*/ true, /*weak*/ false);
__ csetw(res, Assembler::EQ);
} else {
casl(addr, newval, cmpval);
__ eorw (res, r8, 1);
}
< prev index next >