< prev index next >

src/share/vm/gc/shenandoah/vm_operations_shenandoah.cpp

Print this page

        

@@ -30,17 +30,17 @@
 #include "gc/shenandoah/vm_operations_shenandoah.hpp"
 
 void VM_ShenandoahInitMark::doit() {
   GCIdMark gc_id_mark(_gc_id);
   ShenandoahHeap *sh = (ShenandoahHeap*) Universe::heap();
-  WorkGang*       workers = sh->workers();
+  ShenandoahWorkGang* workers = sh->workers();
 
   // Calculate workers for initial marking
   uint nworkers = ShenandoahCollectorPolicy::calc_workers_for_init_marking(
     workers->active_workers(), Threads::number_of_non_daemon_threads());
 
-  ShenandoahWorkerScope scope(workers, nworkers);
+  ShenandoahWorkerSessionScope scope(workers, nworkers, ShenandoahWorkerSessionScope::Parallel);
 
   GCTraceTime(Info, gc) time("Pause Init Mark", sh->gc_timer());
   sh->shenandoahPolicy()->record_phase_start(ShenandoahCollectorPolicy::total_pause);
   sh->shenandoahPolicy()->record_phase_start(ShenandoahCollectorPolicy::init_mark);
 

@@ -86,17 +86,18 @@
 
   // It is critical that we
   // evacuate roots right after finishing marking, so that we don't
   // get unmarked objects in the roots.
   ShenandoahHeap *sh = ShenandoahHeap::heap();
+
+  if (! sh->cancelled_concgc()) {
   // Setup workers for final marking
-  WorkGang* workers = sh->workers();
+    ShenandoahWorkGang* workers = sh->workers();
   uint n_workers = ShenandoahCollectorPolicy::calc_workers_for_final_marking(workers->active_workers(),
     Threads::number_of_non_daemon_threads());
-  ShenandoahWorkerScope scope(workers, n_workers);
+    ShenandoahWorkerSessionScope scope(workers, n_workers, ShenandoahWorkerSessionScope::Parallel);
 
-  if (! sh->cancelled_concgc()) {
     GCTraceTime(Info, gc) time("Pause Final Mark", sh->gc_timer(), GCCause::_no_gc, true);
     sh->shenandoahPolicy()->record_phase_start(ShenandoahCollectorPolicy::total_pause);
     sh->shenandoahPolicy()->record_phase_start(ShenandoahCollectorPolicy::final_mark);
     sh->concurrentMark()->finish_mark_from_roots();
     sh->stop_concurrent_marking();

@@ -113,11 +114,10 @@
     sh->set_need_update_refs(true);
 
     sh->shenandoahPolicy()->record_phase_start(ShenandoahCollectorPolicy::init_evac);
     sh->evacuate_and_update_roots();
     sh->shenandoahPolicy()->record_phase_end(ShenandoahCollectorPolicy::init_evac);
-
   } else {
     GCTraceTime(Info, gc) time("Cancel Concurrent Mark", sh->gc_timer(), GCCause::_no_gc, true);
     sh->concurrentMark()->cancel();
     sh->stop_concurrent_marking();
   }
< prev index next >