Merge
authormlarsson
Thu, 24 Sep 2015 16:19:15 +0200
changeset 33098 2668fb702656
parent 33096 d38227d62ef4 (diff)
parent 33097 96e348cb0442 (current diff)
child 33099 55ad1d5370f6
child 33100 a2899ce72a14
Merge
--- a/hotspot/src/cpu/aarch64/vm/macroAssembler_aarch64.cpp	Thu Sep 24 12:36:04 2015 +0200
+++ b/hotspot/src/cpu/aarch64/vm/macroAssembler_aarch64.cpp	Thu Sep 24 16:19:15 2015 +0200
@@ -3063,11 +3063,15 @@
 
   if (UseCondCardMark) {
     Label L_already_dirty;
+    membar(StoreLoad);
     ldrb(rscratch2,  Address(obj, rscratch1));
     cbz(rscratch2, L_already_dirty);
     strb(zr, Address(obj, rscratch1));
     bind(L_already_dirty);
   } else {
+    if (UseConcMarkSweepGC && CMSPrecleaningEnabled) {
+      membar(StoreStore);
+    }
     strb(zr, Address(obj, rscratch1));
   }
 }
--- a/hotspot/src/cpu/aarch64/vm/stubGenerator_aarch64.cpp	Thu Sep 24 12:36:04 2015 +0200
+++ b/hotspot/src/cpu/aarch64/vm/stubGenerator_aarch64.cpp	Thu Sep 24 16:19:15 2015 +0200
@@ -746,6 +746,9 @@
           const Register count = end; // 'end' register contains bytes count now
           __ mov(scratch, (address)ct->byte_map_base);
           __ add(start, start, scratch);
+          if (UseConcMarkSweepGC) {
+            __ membar(__ StoreStore);
+          }
           __ BIND(L_loop);
           __ strb(zr, Address(start, count));
           __ subs(count, count, 1);
--- a/hotspot/src/share/vm/c1/c1_LIRGenerator.cpp	Thu Sep 24 12:36:04 2015 +0200
+++ b/hotspot/src/share/vm/c1/c1_LIRGenerator.cpp	Thu Sep 24 16:19:15 2015 +0200
@@ -1630,6 +1630,9 @@
     __ move(dirty, card_addr);
     __ branch_destination(L_already_dirty->label());
   } else {
+    if (UseConcMarkSweepGC && CMSPrecleaningEnabled) {
+      __ membar_storestore();
+    }
     __ move(dirty, card_addr);
   }
 #endif