59
60 G1RemSetSummary _prev_period_summary;
61
62 // A DirtyCardQueueSet that is used to hold cards that contain
63 // references into the current collection set. This is used to
64 // update the remembered sets of the regions in the collection
65 // set in the event of an evacuation failure.
66 DirtyCardQueueSet _into_cset_dirty_card_queue_set;
67
68 // Scan all remembered sets of the collection set for references into the collection
69 // set.
70 void scan_rem_set(G1ParScanThreadState* pss,
71 CodeBlobClosure* heap_region_codeblobs,
72 uint worker_i);
73
74 // Flush remaining refinement buffers for cross-region references to either evacuate references
75 // into the collection set or update the remembered set.
76 void update_rem_set(DirtyCardQueue* into_cset_dcq, G1ParScanThreadState* pss, uint worker_i);
77
78 G1CollectedHeap* _g1;
79 size_t _num_conc_refined_cards;
80
81 CardTableModRefBS* _ct_bs;
82 G1Policy* _g1p;
83 G1HotCardCache* _hot_card_cache;
84
85 public:
86 // Gives an approximation on how many threads can be expected to add records to
87 // a remembered set in parallel. This can be used for sizing data structures to
88 // decrease performance losses due to data structure sharing.
89 // Examples for quantities that influence this value are the maximum number of
90 // mutator threads, maximum number of concurrent refinement or GC threads.
91 static uint num_par_rem_sets();
92
93 // Initialize data that depends on the heap size being known.
94 void initialize(size_t capacity, uint max_regions);
95
96 // This is called to reset dual hash tables after the gc pause
97 // is finished and the initial hash table is no longer being
98 // scanned.
99 void cleanupHRRS();
|
59
60 G1RemSetSummary _prev_period_summary;
61
62 // A DirtyCardQueueSet that is used to hold cards that contain
63 // references into the current collection set. This is used to
64 // update the remembered sets of the regions in the collection
65 // set in the event of an evacuation failure.
66 DirtyCardQueueSet _into_cset_dirty_card_queue_set;
67
68 // Scan all remembered sets of the collection set for references into the collection
69 // set.
70 void scan_rem_set(G1ParScanThreadState* pss,
71 CodeBlobClosure* heap_region_codeblobs,
72 uint worker_i);
73
74 // Flush remaining refinement buffers for cross-region references to either evacuate references
75 // into the collection set or update the remembered set.
76 void update_rem_set(DirtyCardQueue* into_cset_dcq, G1ParScanThreadState* pss, uint worker_i);
77
78 G1CollectedHeap* _g1;
79 size_t _num_conc_refined_cards; // Number of cards refined concurrently to the mutator.
80
81 CardTableModRefBS* _ct_bs;
82 G1Policy* _g1p;
83 G1HotCardCache* _hot_card_cache;
84
85 public:
86 // Gives an approximation on how many threads can be expected to add records to
87 // a remembered set in parallel. This can be used for sizing data structures to
88 // decrease performance losses due to data structure sharing.
89 // Examples for quantities that influence this value are the maximum number of
90 // mutator threads, maximum number of concurrent refinement or GC threads.
91 static uint num_par_rem_sets();
92
93 // Initialize data that depends on the heap size being known.
94 void initialize(size_t capacity, uint max_regions);
95
96 // This is called to reset dual hash tables after the gc pause
97 // is finished and the initial hash table is no longer being
98 // scanned.
99 void cleanupHRRS();
|