< prev index next >

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

Print this page
rev 54901 : 8224043: Shenandoah: Remove clear_claimed_marks() from start of concurrent_traversal()


 539     if (work == 0) {
 540       // No more work, try to terminate
 541       ShenandoahEvacOOMScopeLeaver oom_scope_leaver;
 542       ShenandoahSuspendibleThreadSetLeaver stsl(sts_yield && ShenandoahSuspendibleWorkers);
 543       ShenandoahTerminationTimingsTracker term_tracker(worker_id);
 544       ShenandoahTerminatorTerminator tt(_heap);
 545 
 546       if (terminator->offer_termination(&tt)) return;
 547     }
 548   }
 549 }
 550 
 551 bool ShenandoahTraversalGC::check_and_handle_cancelled_gc(ShenandoahTaskTerminator* terminator, bool sts_yield) {
 552   if (_heap->cancelled_gc()) {
 553     return true;
 554   }
 555   return false;
 556 }
 557 
 558 void ShenandoahTraversalGC::concurrent_traversal_collection() {
 559   {
 560     MutexLocker ml(ClassLoaderDataGraph_lock);
 561     ClassLoaderDataGraph::clear_claimed_marks();
 562   }
 563 
 564   ShenandoahGCPhase phase_work(ShenandoahPhaseTimings::conc_traversal);
 565   if (!_heap->cancelled_gc()) {
 566     uint nworkers = _heap->workers()->active_workers();
 567     task_queues()->reserve(nworkers);
 568     ShenandoahTerminationTracker tracker(ShenandoahPhaseTimings::conc_traversal_termination);
 569 
 570     ShenandoahTaskTerminator terminator(nworkers, task_queues());
 571     ShenandoahConcurrentTraversalCollectionTask task(&terminator);
 572     _heap->workers()->run_task(&task);
 573   }
 574 
 575   if (!_heap->cancelled_gc() && ShenandoahPreclean && _heap->process_references()) {
 576     preclean_weak_refs();
 577   }
 578 }
 579 
 580 void ShenandoahTraversalGC::final_traversal_collection() {
 581   _heap->make_parsable(true);
 582 
 583   if (!_heap->cancelled_gc()) {




 539     if (work == 0) {
 540       // No more work, try to terminate
 541       ShenandoahEvacOOMScopeLeaver oom_scope_leaver;
 542       ShenandoahSuspendibleThreadSetLeaver stsl(sts_yield && ShenandoahSuspendibleWorkers);
 543       ShenandoahTerminationTimingsTracker term_tracker(worker_id);
 544       ShenandoahTerminatorTerminator tt(_heap);
 545 
 546       if (terminator->offer_termination(&tt)) return;
 547     }
 548   }
 549 }
 550 
 551 bool ShenandoahTraversalGC::check_and_handle_cancelled_gc(ShenandoahTaskTerminator* terminator, bool sts_yield) {
 552   if (_heap->cancelled_gc()) {
 553     return true;
 554   }
 555   return false;
 556 }
 557 
 558 void ShenandoahTraversalGC::concurrent_traversal_collection() {





 559   ShenandoahGCPhase phase_work(ShenandoahPhaseTimings::conc_traversal);
 560   if (!_heap->cancelled_gc()) {
 561     uint nworkers = _heap->workers()->active_workers();
 562     task_queues()->reserve(nworkers);
 563     ShenandoahTerminationTracker tracker(ShenandoahPhaseTimings::conc_traversal_termination);
 564 
 565     ShenandoahTaskTerminator terminator(nworkers, task_queues());
 566     ShenandoahConcurrentTraversalCollectionTask task(&terminator);
 567     _heap->workers()->run_task(&task);
 568   }
 569 
 570   if (!_heap->cancelled_gc() && ShenandoahPreclean && _heap->process_references()) {
 571     preclean_weak_refs();
 572   }
 573 }
 574 
 575 void ShenandoahTraversalGC::final_traversal_collection() {
 576   _heap->make_parsable(true);
 577 
 578   if (!_heap->cancelled_gc()) {


< prev index next >