214 |
214 |
215 return rspc.marked_bytes(); |
215 return rspc.marked_bytes(); |
216 } |
216 } |
217 |
217 |
218 bool doHeapRegion(HeapRegion *hr) { |
218 bool doHeapRegion(HeapRegion *hr) { |
219 bool during_initial_mark = _g1h->collector_state()->during_initial_mark_pause(); |
|
220 bool during_conc_mark = _g1h->collector_state()->mark_in_progress(); |
|
221 |
|
222 assert(!hr->is_pinned(), "Unexpected pinned region at index %u", hr->hrm_index()); |
219 assert(!hr->is_pinned(), "Unexpected pinned region at index %u", hr->hrm_index()); |
223 assert(hr->in_collection_set(), "bad CS"); |
220 assert(hr->in_collection_set(), "bad CS"); |
224 |
221 |
225 if (_hrclaimer->claim_region(hr->hrm_index())) { |
222 if (_hrclaimer->claim_region(hr->hrm_index())) { |
226 if (hr->evacuation_failed()) { |
223 if (hr->evacuation_failed()) { |
|
224 bool during_initial_mark = _g1h->collector_state()->during_initial_mark_pause(); |
|
225 bool during_conc_mark = _g1h->collector_state()->mark_in_progress(); |
|
226 |
227 hr->note_self_forwarding_removal_start(during_initial_mark, |
227 hr->note_self_forwarding_removal_start(during_initial_mark, |
228 during_conc_mark); |
228 during_conc_mark); |
229 _g1h->verifier()->check_bitmaps("Self-Forwarding Ptr Removal", hr); |
229 _g1h->verifier()->check_bitmaps("Self-Forwarding Ptr Removal", hr); |
230 |
230 |
231 hr->reset_bot(); |
231 hr->reset_bot(); |
232 |
232 |
233 size_t live_bytes = remove_self_forward_ptr_by_walking_hr(hr, during_initial_mark); |
233 size_t live_bytes = remove_self_forward_ptr_by_walking_hr(hr, during_initial_mark); |
234 |
234 |
235 hr->rem_set()->clean_strong_code_roots(hr); |
235 hr->rem_set()->clean_strong_code_roots(hr); |
236 |
236 |
237 hr->note_self_forwarding_removal_end(during_initial_mark, |
237 hr->note_self_forwarding_removal_end(live_bytes); |
238 during_conc_mark, |
|
239 live_bytes); |
|
240 } |
238 } |
241 } |
239 } |
242 return false; |
240 return false; |
243 } |
241 } |
244 }; |
242 }; |