changeset 7546:b5dc2da31ba5

Backout 7167:6298eeefbb7b
author aph
date Tue, 09 Sep 2014 09:32:14 -0400
parents bdd6cf8f4f10
children e97a048e045a
files src/share/vm/opto/memnode.hpp src/share/vm/opto/parse2.cpp
diffstat 2 files changed, 1 insertions(+), 7 deletions(-) [+]
line wrap: on
line diff
--- a/src/share/vm/opto/memnode.hpp	Tue Sep 09 09:30:42 2014 -0400
+++ b/src/share/vm/opto/memnode.hpp	Tue Sep 09 09:32:14 2014 -0400
@@ -488,12 +488,6 @@
   // Conservatively release stores of object references in order to
   // ensure visibility of object initialization.
   static inline MemOrd release_if_reference(const BasicType t) {
-    // AArch64 doesn't need a release store because if there is an
-    // address dependency between a read and a write, then those
-    // memory accesses are observed in program order by all observers
-    // within the shareability domain.
-    AARCH64_ONLY(return unordered);
-
     const MemOrd mo = (t == T_ARRAY ||
                        t == T_ADDRESS || // Might be the address of an object reference (`boxing').
                        t == T_OBJECT) ? release : unordered;
--- a/src/share/vm/opto/parse2.cpp	Tue Sep 09 09:30:42 2014 -0400
+++ b/src/share/vm/opto/parse2.cpp	Tue Sep 09 09:32:14 2014 -0400
@@ -1744,7 +1744,7 @@
     a = pop();                  // the array itself
     const TypeOopPtr* elemtype  = _gvn.type(a)->is_aryptr()->elem()->make_oopptr();
     const TypeAryPtr* adr_type = TypeAryPtr::OOPS;
-    Node* store = store_oop_to_array(control(), a, d, adr_type, c, elemtype, T_OBJECT, StoreNode::release_if_reference(T_OBJECT));
+    Node* store = store_oop_to_array(control(), a, d, adr_type, c, elemtype, T_OBJECT, MemNode::release);
     break;
   }
   case Bytecodes::_lastore: {