< prev index next >

src/hotspot/share/gc/shenandoah/shenandoahHeapRegion.hpp

Print this page
rev 57745 : 8240872: Shenandoah: Avoid updating new regions from start of evacuation
Reviewed-by: shade
rev 57746 : 8240873: Shenandoah: Short-cut arraycopy barriers
Reviewed-by: shade

@@ -258,11 +258,11 @@
   uint64_t _seqnum_last_alloc_gc;
 
   volatile size_t _live_data;
   volatile size_t _critical_pins;
 
-  HeapWord* _update_watermark;
+  HeapWord* volatile _update_watermark;
 
   // Claim some space at the end to protect next region
   DEFINE_PAD_MINUS_SIZE(0, DEFAULT_CACHE_LINE_SIZE, 0);
 
 public:

@@ -429,16 +429,16 @@
     return _seqnum_last_alloc_gc;
   }
 
   HeapWord* get_update_watermark() const {
     assert(bottom() <= _update_watermark && _update_watermark <= top(), "within bounds");
-    return _update_watermark;
+    return Atomic::load_acquire(&_update_watermark);
   }
 
   void set_update_watermark(HeapWord* w) {
     assert(bottom() <= w && w <= top(), "within bounds");
-    _update_watermark = w;
+    Atomic::release_store(&_update_watermark, w);
   }
 
 private:
   void do_commit();
   void do_uncommit();
< prev index next >