< prev index next >

src/share/vm/c1/c1_GraphBuilder.cpp

Print this page
rev 9031 : 8138894: C1: Support IRIW on weak memory platforms
Reviewed-by:

@@ -1436,11 +1436,13 @@
     call_register_finalizer();
   }
 
   bool need_mem_bar = false;
   if (method()->name() == ciSymbol::object_initializer_name() &&
-      (scope()->wrote_final() || (AlwaysSafeConstructors && scope()->wrote_fields()))) {
+      (scope()->wrote_final() || (AlwaysSafeConstructors && scope()->wrote_fields())
+                              || (support_IRIW_for_not_multiple_copy_atomic_cpu && scope()->wrote_volatile())
+     )){
     need_mem_bar = true;
   }
 
   // Check to see whether we are inlining. If so, Return
   // instructions become Gotos to the continuation point.

@@ -1552,10 +1554,13 @@
     scope()->set_wrote_final();
   }
 
   if (code == Bytecodes::_putfield) {
     scope()->set_wrote_fields();
+    if (field->is_volatile()) {
+      scope()->set_wrote_volatile();
+    }
   }
 
   const int offset = !needs_patching ? field->offset() : -1;
   switch (code) {
     case Bytecodes::_getstatic: {
< prev index next >