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