< prev index next >

src/hotspot/cpu/x86/c1_LIRGenerator_x86.cpp

Print this page

        

*** 768,778 **** as_BasicType(type)); } __ leal(LIR_OprFact::address(a), 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); } --- 768,778 ---- as_BasicType(type)); } __ leal(LIR_OprFact::address(a), 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); }
*** 1617,1627 **** __ move(tmp, spill); __ move(spill, dst); } else { LIR_Address* addr = new LIR_Address(src, offset, type); __ load(addr, dst); ! if (type == T_OBJECT && UseLoadBarrier) { load_barrier(dst, LIR_OprFact::address(addr)); } } } --- 1617,1627 ---- __ move(tmp, spill); __ move(spill, dst); } else { LIR_Address* addr = new LIR_Address(src, offset, type); __ load(addr, dst); ! if (type == T_OBJECT && UseZGC) { load_barrier(dst, LIR_OprFact::address(addr)); } } }
*** 1698,1708 **** pre_barrier(LIR_OprFact::address(addr), LIR_OprFact::illegalOpr /* pre_val */, true /* do_load */, false /* patch */, NULL); } __ xchg(LIR_OprFact::address(addr), dst, dst, LIR_OprFact::illegalOpr); if (is_obj) { ! if (UseLoadBarrier) { load_barrier(dst); } // Seems to be a precise address post_barrier(LIR_OprFact::address(addr), data); --- 1698,1708 ---- pre_barrier(LIR_OprFact::address(addr), LIR_OprFact::illegalOpr /* pre_val */, true /* do_load */, false /* patch */, NULL); } __ xchg(LIR_OprFact::address(addr), dst, dst, LIR_OprFact::illegalOpr); if (is_obj) { ! if (UseZGC) { load_barrier(dst); } // Seems to be a precise address post_barrier(LIR_OprFact::address(addr), data);
< prev index next >