< prev index next >

src/hotspot/share/gc/g1/g1ThreadLocalData.hpp

Print this page
rev 57544 : 8236485: Work-in-progress: Epoch synchronization protocol for G1 concurrent refinement
Reviewed-by:

@@ -31,14 +31,19 @@
 #include "utilities/debug.hpp"
 #include "utilities/sizes.hpp"
 
 class G1ThreadLocalData {
 private:
+  // Support for Asymmetric Dekker Synchronization with concurrent refinement
+  // threads.
+  volatile uintx _epoch;
+
   SATBMarkQueue _satb_mark_queue;
   G1DirtyCardQueue _dirty_card_queue;
 
   G1ThreadLocalData() :
+      _epoch(0),
       _satb_mark_queue(&G1BarrierSet::satb_mark_queue_set()),
       _dirty_card_queue(&G1BarrierSet::dirty_card_queue_set()) {}
 
   static G1ThreadLocalData* data(Thread* thread) {
     assert(UseG1GC, "Sanity");

@@ -60,10 +65,14 @@
 
   static void destroy(Thread* thread) {
     data(thread)->~G1ThreadLocalData();
   }
 
+  static volatile uintx& epoch(Thread* thread) {
+    return data(thread)->_epoch;
+  }
+
   static SATBMarkQueue& satb_mark_queue(Thread* thread) {
     return data(thread)->_satb_mark_queue;
   }
 
   static G1DirtyCardQueue& dirty_card_queue(Thread* thread) {
< prev index next >