< prev index next >

src/hotspot/share/gc/shenandoah/shenandoahMarkCompact.cpp

Print this page
rev 59828 : 8247845: Shenandoah: refactor TLAB/GCLAB retirement code
Reviewed-by: XXX


 123     assert(heap->marking_context()->is_bitmap_clear(), "sanity");
 124     assert(!heap->marking_context()->is_complete(), "sanity");
 125 
 126     // d. Abandon reference discovery and clear all discovered references.
 127     ReferenceProcessor* rp = heap->ref_processor();
 128     rp->disable_discovery();
 129     rp->abandon_partial_discovery();
 130     rp->verify_no_references_recorded();
 131 
 132     // e. Set back forwarded objects bit back, in case some steps above dropped it.
 133     heap->set_has_forwarded_objects(has_forwarded_objects);
 134 
 135     // f. Sync pinned region status from the CP marks
 136     heap->sync_pinned_region_status();
 137 
 138     // The rest of prologue:
 139     BiasedLocking::preserve_marks();
 140     _preserved_marks->init(heap->workers()->active_workers());
 141   }
 142 
 143   heap->make_parsable(true);



 144 
 145   OrderAccess::fence();
 146 
 147   phase1_mark_heap();
 148 
 149   // Once marking is done, which may have fixed up forwarded objects, we can drop it.
 150   // Coming out of Full GC, we would not have any forwarded objects.
 151   // This also prevents resolves with fwdptr from kicking in while adjusting pointers in phase3.
 152   heap->set_has_forwarded_objects(false);
 153 
 154   heap->set_full_gc_move_in_progress(true);
 155 
 156   // Setup workers for the rest
 157   OrderAccess::fence();
 158 
 159   // Initialize worker slices
 160   ShenandoahHeapRegionSet** worker_slices = NEW_C_HEAP_ARRAY(ShenandoahHeapRegionSet*, heap->max_workers(), mtGC);
 161   for (uint i = 0; i < heap->max_workers(); i++) {
 162     worker_slices[i] = new ShenandoahHeapRegionSet();
 163   }




 123     assert(heap->marking_context()->is_bitmap_clear(), "sanity");
 124     assert(!heap->marking_context()->is_complete(), "sanity");
 125 
 126     // d. Abandon reference discovery and clear all discovered references.
 127     ReferenceProcessor* rp = heap->ref_processor();
 128     rp->disable_discovery();
 129     rp->abandon_partial_discovery();
 130     rp->verify_no_references_recorded();
 131 
 132     // e. Set back forwarded objects bit back, in case some steps above dropped it.
 133     heap->set_has_forwarded_objects(has_forwarded_objects);
 134 
 135     // f. Sync pinned region status from the CP marks
 136     heap->sync_pinned_region_status();
 137 
 138     // The rest of prologue:
 139     BiasedLocking::preserve_marks();
 140     _preserved_marks->init(heap->workers()->active_workers());
 141   }
 142 
 143   if (UseTLAB) {
 144     heap->gclabs_retire(true);
 145     heap->tlabs_retire(true);
 146   }
 147 
 148   OrderAccess::fence();
 149 
 150   phase1_mark_heap();
 151 
 152   // Once marking is done, which may have fixed up forwarded objects, we can drop it.
 153   // Coming out of Full GC, we would not have any forwarded objects.
 154   // This also prevents resolves with fwdptr from kicking in while adjusting pointers in phase3.
 155   heap->set_has_forwarded_objects(false);
 156 
 157   heap->set_full_gc_move_in_progress(true);
 158 
 159   // Setup workers for the rest
 160   OrderAccess::fence();
 161 
 162   // Initialize worker slices
 163   ShenandoahHeapRegionSet** worker_slices = NEW_C_HEAP_ARRAY(ShenandoahHeapRegionSet*, heap->max_workers(), mtGC);
 164   for (uint i = 0; i < heap->max_workers(); i++) {
 165     worker_slices[i] = new ShenandoahHeapRegionSet();
 166   }


< prev index next >