src/share/vm/c1/c1_LIRGenerator.cpp

Print this page

        

*** 1732,1742 **** true /* do_load*/, needs_patching, (info ? new CodeEmitInfo(info) : NULL)); } ! if (is_volatile && !needs_patching) { volatile_field_store(value.result(), address, info); } else { LIR_PatchCode patch_code = needs_patching ? lir_patch_normal : lir_patch_none; __ store(value.result(), address, info, patch_code); } --- 1732,1743 ---- true /* do_load*/, needs_patching, (info ? new CodeEmitInfo(info) : NULL)); } ! bool needs_atomic_access = is_volatile || AlwaysAtomicAccesses; ! if (needs_atomic_access && !needs_patching) { volatile_field_store(value.result(), address, info); } else { LIR_PatchCode patch_code = needs_patching ? lir_patch_normal : lir_patch_none; __ store(value.result(), address, info, patch_code); }
*** 1805,1815 **** address = new LIR_Address(object.result(), PATCHED_ADDR, field_type); } else { address = generate_address(object.result(), x->offset(), field_type); } ! if (is_volatile && !needs_patching) { volatile_field_load(address, reg, info); } else { LIR_PatchCode patch_code = needs_patching ? lir_patch_normal : lir_patch_none; __ load(address, reg, info, patch_code); } --- 1806,1817 ---- address = new LIR_Address(object.result(), PATCHED_ADDR, field_type); } else { address = generate_address(object.result(), x->offset(), field_type); } ! bool needs_atomic_access = is_volatile || AlwaysAtomicAccesses; ! if (needs_atomic_access && !needs_patching) { volatile_field_load(address, reg, info); } else { LIR_PatchCode patch_code = needs_patching ? lir_patch_normal : lir_patch_none; __ load(address, reg, info, patch_code); }