69 void update_rem_set(G1ParScanThreadState* pss, uint worker_i);
70
71 G1CollectedHeap* _g1h;
72 size_t _num_conc_refined_cards; // Number of cards refined concurrently to the mutator.
73
74 G1CardTable* _ct;
75 G1Policy* _g1p;
76 G1HotCardCache* _hot_card_cache;
77
78 public:
79 // Gives an approximation on how many threads can be expected to add records to
80 // a remembered set in parallel. This can be used for sizing data structures to
81 // decrease performance losses due to data structure sharing.
82 // Examples for quantities that influence this value are the maximum number of
83 // mutator threads, maximum number of concurrent refinement or GC threads.
84 static uint num_par_rem_sets();
85
86 // Initialize data that depends on the heap size being known.
87 void initialize(size_t capacity, uint max_regions);
88
89 // This is called to reset dual hash tables after the gc pause
90 // is finished and the initial hash table is no longer being
91 // scanned.
92 void cleanupHRRS();
93
94 G1RemSet(G1CollectedHeap* g1h,
95 G1CardTable* ct,
96 G1HotCardCache* hot_card_cache);
97 ~G1RemSet();
98
99 // Process all oops in the collection set from the cards in the refinement buffers and
100 // remembered sets using pss.
101 //
102 // Further applies heap_region_codeblobs on the oops of the unmarked nmethods on the strong code
103 // roots list for each region in the collection set.
104 void oops_into_collection_set_do(G1ParScanThreadState* pss, uint worker_i);
105
106 // Prepare for and cleanup after an oops_into_collection_set_do
107 // call. Must call each of these once before and after (in sequential
108 // code) any thread calls oops_into_collection_set_do.
109 void prepare_for_oops_into_collection_set_do();
110 void cleanup_after_oops_into_collection_set_do();
111
112 G1RemSetScanState* scan_state() const { return _scan_state; }
113
|
69 void update_rem_set(G1ParScanThreadState* pss, uint worker_i);
70
71 G1CollectedHeap* _g1h;
72 size_t _num_conc_refined_cards; // Number of cards refined concurrently to the mutator.
73
74 G1CardTable* _ct;
75 G1Policy* _g1p;
76 G1HotCardCache* _hot_card_cache;
77
78 public:
79 // Gives an approximation on how many threads can be expected to add records to
80 // a remembered set in parallel. This can be used for sizing data structures to
81 // decrease performance losses due to data structure sharing.
82 // Examples for quantities that influence this value are the maximum number of
83 // mutator threads, maximum number of concurrent refinement or GC threads.
84 static uint num_par_rem_sets();
85
86 // Initialize data that depends on the heap size being known.
87 void initialize(size_t capacity, uint max_regions);
88
89 G1RemSet(G1CollectedHeap* g1h,
90 G1CardTable* ct,
91 G1HotCardCache* hot_card_cache);
92 ~G1RemSet();
93
94 // Process all oops in the collection set from the cards in the refinement buffers and
95 // remembered sets using pss.
96 //
97 // Further applies heap_region_codeblobs on the oops of the unmarked nmethods on the strong code
98 // roots list for each region in the collection set.
99 void oops_into_collection_set_do(G1ParScanThreadState* pss, uint worker_i);
100
101 // Prepare for and cleanup after an oops_into_collection_set_do
102 // call. Must call each of these once before and after (in sequential
103 // code) any thread calls oops_into_collection_set_do.
104 void prepare_for_oops_into_collection_set_do();
105 void cleanup_after_oops_into_collection_set_do();
106
107 G1RemSetScanState* scan_state() const { return _scan_state; }
108
|