equal
deleted
inserted
replaced
108 } |
108 } |
109 |
109 |
110 // b. Cancel concurrent mark, if in progress |
110 // b. Cancel concurrent mark, if in progress |
111 if (heap->is_concurrent_mark_in_progress()) { |
111 if (heap->is_concurrent_mark_in_progress()) { |
112 heap->concurrent_mark()->cancel(); |
112 heap->concurrent_mark()->cancel(); |
113 heap->stop_concurrent_marking(); |
113 heap->set_concurrent_mark_in_progress(false); |
114 } |
114 } |
115 assert(!heap->is_concurrent_mark_in_progress(), "sanity"); |
115 assert(!heap->is_concurrent_mark_in_progress(), "sanity"); |
116 |
116 |
117 // c. Reset the bitmaps for new marking |
117 // c. Reset the bitmaps for new marking |
118 heap->reset_mark_bitmap(); |
118 heap->reset_mark_bitmap(); |
241 rp->set_active_mt_degree(heap->workers()->active_workers()); |
241 rp->set_active_mt_degree(heap->workers()->active_workers()); |
242 |
242 |
243 cm->update_roots(ShenandoahPhaseTimings::full_gc_roots); |
243 cm->update_roots(ShenandoahPhaseTimings::full_gc_roots); |
244 cm->mark_roots(ShenandoahPhaseTimings::full_gc_roots); |
244 cm->mark_roots(ShenandoahPhaseTimings::full_gc_roots); |
245 cm->finish_mark_from_roots(/* full_gc = */ true); |
245 cm->finish_mark_from_roots(/* full_gc = */ true); |
246 |
|
247 heap->mark_complete_marking_context(); |
246 heap->mark_complete_marking_context(); |
|
247 heap->parallel_cleaning(true /* full_gc */); |
248 } |
248 } |
249 |
249 |
250 class ShenandoahPrepareForCompactionObjectClosure : public ObjectClosure { |
250 class ShenandoahPrepareForCompactionObjectClosure : public ObjectClosure { |
251 private: |
251 private: |
252 PreservedMarks* const _preserved_marks; |
252 PreservedMarks* const _preserved_marks; |