Mercurial > hg > truffle
diff src/share/vm/opto/parse3.cpp @ 14662:3c3953fb3f2a
8033380: Experimental VM flag to enforce access atomicity
Summary: -XX:+AlwaysAtomicAccesses to unconditionally enforce the access atomicity.
Reviewed-by: roland, kvn, iveresov
author | shade |
---|---|
date | Mon, 03 Mar 2014 15:54:45 +0400 |
parents | 45467c53f178 |
children | 3edd4a71588b |
line wrap: on
line diff
--- a/src/share/vm/opto/parse3.cpp Tue Jan 28 15:05:46 2014 +0100 +++ b/src/share/vm/opto/parse3.cpp Mon Mar 03 15:54:45 2014 +0400 @@ -233,7 +233,8 @@ // Build the load. // MemNode::MemOrd mo = is_vol ? MemNode::acquire : MemNode::unordered; - Node* ld = make_load(NULL, adr, type, bt, adr_type, mo, is_vol); + bool needs_atomic_access = is_vol || AlwaysAtomicAccesses; + Node* ld = make_load(NULL, adr, type, bt, adr_type, mo, needs_atomic_access); // Adjust Java stack if (type2size[bt] == 1) @@ -314,7 +315,8 @@ } store = store_oop_to_object(control(), obj, adr, adr_type, val, field_type, bt, mo); } else { - store = store_to_memory(control(), adr, val, bt, adr_type, mo, is_vol); + bool needs_atomic_access = is_vol || AlwaysAtomicAccesses; + store = store_to_memory(control(), adr, val, bt, adr_type, mo, needs_atomic_access); } // If reference is volatile, prevent following volatiles ops from