equal
deleted
inserted
replaced
225 if (hr->evacuation_failed()) { |
225 if (hr->evacuation_failed()) { |
226 hr->note_self_forwarding_removal_start(during_initial_mark, |
226 hr->note_self_forwarding_removal_start(during_initial_mark, |
227 during_conc_mark); |
227 during_conc_mark); |
228 _g1h->verifier()->check_bitmaps("Self-Forwarding Ptr Removal", hr); |
228 _g1h->verifier()->check_bitmaps("Self-Forwarding Ptr Removal", hr); |
229 |
229 |
230 // In the common case (i.e. when there is no evacuation |
|
231 // failure) we make sure that the following is done when |
|
232 // the region is freed so that it is "ready-to-go" when it's |
|
233 // re-allocated. However, when evacuation failure happens, a |
|
234 // region will remain in the heap and might ultimately be added |
|
235 // to a CSet in the future. So we have to be careful here and |
|
236 // make sure the region's RSet is ready for parallel iteration |
|
237 // whenever this might be required in the future. |
|
238 hr->rem_set()->reset_for_par_iteration(); |
|
239 hr->reset_bot(); |
230 hr->reset_bot(); |
240 |
231 |
241 size_t live_bytes = remove_self_forward_ptr_by_walking_hr(hr, during_initial_mark); |
232 size_t live_bytes = remove_self_forward_ptr_by_walking_hr(hr, during_initial_mark); |
242 |
233 |
243 hr->rem_set()->clean_strong_code_roots(hr); |
234 hr->rem_set()->clean_strong_code_roots(hr); |