125 template <class T> void par_write_ref(HeapRegion* from, T* p, uint tid);
126
127 // Eliminates any remembered set entries that correspond to dead heap ranges.
128 void scrub(uint worker_num, HeapRegionClaimer* hrclaimer);
129
130 // Refine the card corresponding to "card_ptr". Safe to be called concurrently
131 // to the mutator.
132 void refine_card_concurrently(jbyte* card_ptr,
133 uint worker_i);
134
135 // Refine the card corresponding to "card_ptr", applying the given closure to
136 // all references found. Returns "true" if the given card contains
137 // oops that have references into the current collection set. Must only be
138 // called during gc.
139 bool refine_card_during_gc(jbyte* card_ptr,
140 G1ScanObjsDuringUpdateRSClosure* update_rs_cl);
141
142 // Print accumulated summary info from the start of the VM.
143 void print_summary_info();
144
145 void initialize_periodic_summary_info();
146 // Print accumulated summary info from the last time called.
147 void print_periodic_summary_info(const char* header, uint period_count);
148
149 size_t num_conc_refined_cards() const { return _num_conc_refined_cards; }
150
151 void create_card_live_data(WorkGang* workers, G1CMBitMap* mark_bitmap);
152 void finalize_card_live_data(WorkGang* workers, G1CMBitMap* mark_bitmap);
153
154 // Verify that the liveness count data created concurrently matches one created
155 // during this safepoint.
156 void verify_card_live_data(WorkGang* workers, G1CMBitMap* actual_bitmap);
157
158 void clear_card_live_data(WorkGang* workers);
159
160 #ifdef ASSERT
161 void verify_card_live_data_is_clear();
162 #endif
163 };
164
165 class G1ScanRSForRegionClosure : public HeapRegionClosure {
|
125 template <class T> void par_write_ref(HeapRegion* from, T* p, uint tid);
126
127 // Eliminates any remembered set entries that correspond to dead heap ranges.
128 void scrub(uint worker_num, HeapRegionClaimer* hrclaimer);
129
130 // Refine the card corresponding to "card_ptr". Safe to be called concurrently
131 // to the mutator.
132 void refine_card_concurrently(jbyte* card_ptr,
133 uint worker_i);
134
135 // Refine the card corresponding to "card_ptr", applying the given closure to
136 // all references found. Returns "true" if the given card contains
137 // oops that have references into the current collection set. Must only be
138 // called during gc.
139 bool refine_card_during_gc(jbyte* card_ptr,
140 G1ScanObjsDuringUpdateRSClosure* update_rs_cl);
141
142 // Print accumulated summary info from the start of the VM.
143 void print_summary_info();
144
145 // Print accumulated summary info from the last time called.
146 void print_periodic_summary_info(const char* header, uint period_count);
147
148 size_t num_conc_refined_cards() const { return _num_conc_refined_cards; }
149
150 void create_card_live_data(WorkGang* workers, G1CMBitMap* mark_bitmap);
151 void finalize_card_live_data(WorkGang* workers, G1CMBitMap* mark_bitmap);
152
153 // Verify that the liveness count data created concurrently matches one created
154 // during this safepoint.
155 void verify_card_live_data(WorkGang* workers, G1CMBitMap* actual_bitmap);
156
157 void clear_card_live_data(WorkGang* workers);
158
159 #ifdef ASSERT
160 void verify_card_live_data_is_clear();
161 #endif
162 };
163
164 class G1ScanRSForRegionClosure : public HeapRegionClosure {
|