< prev index next >
src/hotspot/cpu/sparc/c1_LIRGenerator_sparc.cpp
Print this page
*** 661,671 ****
val.load_item();
__ add(obj.result(), offset.result(), addr);
if (type == objectType) { // Write-barrier needed for Object fields.
! if (UseLoadBarrier) {
// Load barrier to make sure that cas_obj() sees a correct oop.
LIR_Opr pre_val = new_register(T_OBJECT);
__ load(new LIR_Address(addr, as_BasicType(type)), pre_val);
load_barrier(pre_val, addr);
}
--- 661,671 ----
val.load_item();
__ add(obj.result(), offset.result(), addr);
if (type == objectType) { // Write-barrier needed for Object fields.
! if (UseZGC) {
// Load barrier to make sure that cas_obj() sees a correct oop.
LIR_Opr pre_val = new_register(T_OBJECT);
__ load(new LIR_Address(addr, as_BasicType(type)), pre_val);
load_barrier(pre_val, addr);
}
*** 1388,1398 ****
void LIRGenerator::get_Object_unsafe(LIR_Opr dst, LIR_Opr src, LIR_Opr offset,
BasicType type, bool is_volatile) {
{
LIR_Address* addr = new LIR_Address(src, offset, type);
__ load(addr, dst);
! if (type == T_OBJECT && UseLoadBarrier) {
load_barrier(dst, LIR_OprFact::address(addr));
}
}
}
--- 1388,1398 ----
void LIRGenerator::get_Object_unsafe(LIR_Opr dst, LIR_Opr src, LIR_Opr offset,
BasicType type, bool is_volatile) {
{
LIR_Address* addr = new LIR_Address(src, offset, type);
__ load(addr, dst);
! if (type == T_OBJECT && UseZGC) {
load_barrier(dst, LIR_OprFact::address(addr));
}
}
}
*** 1438,1448 ****
pre_barrier(ptr, LIR_OprFact::illegalOpr /* pre_val */,
true /* do_load */, false /* patch */, NULL);
}
__ xchg(LIR_OprFact::address(addr), dst, dst, tmp);
if (is_obj) {
! if (UseLoadBarrier) {
load_barrier(dst);
}
// Seems to be a precise address
post_barrier(ptr, data);
--- 1438,1448 ----
pre_barrier(ptr, LIR_OprFact::illegalOpr /* pre_val */,
true /* do_load */, false /* patch */, NULL);
}
__ xchg(LIR_OprFact::address(addr), dst, dst, tmp);
if (is_obj) {
! if (UseZGC) {
load_barrier(dst);
}
// Seems to be a precise address
post_barrier(ptr, data);
< prev index next >