< prev index next >

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

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

@@ -24,10 +24,11 @@
 
 #ifndef SHARE_GC_G1_G1CONCURRENTREFINE_HPP
 #define SHARE_GC_G1_G1CONCURRENTREFINE_HPP
 
 #include "memory/allocation.hpp"
+#include "gc/g1/g1EpochSynchronizer.hpp"
 #include "utilities/globalDefinitions.hpp"
 #include "utilities/ticks.hpp"
 
 // Forward decl
 class G1ConcurrentRefine;

@@ -69,10 +70,11 @@
 // Refinement thread n activates thread n+1 if the instance of this class determines there
 // is enough work available. Threads deactivate themselves if the current amount of
 // available cards falls below their individual threshold.
 class G1ConcurrentRefine : public CHeapObj<mtGC> {
   G1ConcurrentRefineThreadControl _thread_control;
+  G1EpochSynchronizerCounters _synchronizer_counters;
   /*
    * The value of the completed dirty card queue length falls into one of 3 zones:
    * green, yellow, red. If the value is in [0, green) nothing is
    * done, the buffered cards are left unprocessed to enable the caching effect of the
    * dirtied cards. In the yellow zone [green, yellow) the concurrent refinement

@@ -142,10 +144,14 @@
   // Maximum number of refinement threads.
   static uint max_num_threads();
 
   void print_threads_on(outputStream* st) const;
 
+  G1EpochSynchronizerCounters* synchronizer_counters() {
+    return &_synchronizer_counters;
+  }
+
   // Cards in the dirty card queue set.
   size_t green_zone() const      { return _green_zone;  }
   size_t yellow_zone() const     { return _yellow_zone; }
   size_t red_zone() const        { return _red_zone;    }
 };
< prev index next >