< 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 >