hotspot/src/share/vm/gc/parallel/psParallelCompact.hpp
changeset 33758 aa54610a0b93
parent 33227 b00ec45f8c2c
child 35061 be6025ebffea
--- a/hotspot/src/share/vm/gc/parallel/psParallelCompact.hpp	Tue Nov 03 19:53:10 2015 -0500
+++ b/hotspot/src/share/vm/gc/parallel/psParallelCompact.hpp	Wed Nov 04 13:38:38 2015 +0100
@@ -347,7 +347,7 @@
     HeapWord*            _partial_obj_addr;
     region_sz_t          _partial_obj_size;
     region_sz_t volatile _dc_and_los;
-    bool                 _blocks_filled;
+    bool        volatile _blocks_filled;
 
 #ifdef ASSERT
     size_t               _blocks_filled_count;   // Number of block table fills.
@@ -498,7 +498,9 @@
 inline bool
 ParallelCompactData::RegionData::blocks_filled() const
 {
-  return _blocks_filled;
+  bool result = _blocks_filled;
+  OrderAccess::acquire();
+  return result;
 }
 
 #ifdef ASSERT
@@ -512,6 +514,7 @@
 inline void
 ParallelCompactData::RegionData::set_blocks_filled()
 {
+  OrderAccess::release();
   _blocks_filled = true;
   // Debug builds count the number of times the table was filled.
   DEBUG_ONLY(Atomic::inc_ptr(&_blocks_filled_count));