src/hotspot/share/gc/shenandoah/shenandoahRootProcessor.cpp
changeset 58686 0279391875bf
parent 58233 89033e6641ed
child 58929 03f182a0f62c
equal deleted inserted replaced
58685:4b13a908c2d0 58686:0279391875bf
   187 ShenandoahRootUpdater::ShenandoahRootUpdater(uint n_workers, ShenandoahPhaseTimings::Phase phase) :
   187 ShenandoahRootUpdater::ShenandoahRootUpdater(uint n_workers, ShenandoahPhaseTimings::Phase phase) :
   188   ShenandoahRootProcessor(phase),
   188   ShenandoahRootProcessor(phase),
   189   _thread_roots(n_workers > 1) {
   189   _thread_roots(n_workers > 1) {
   190 }
   190 }
   191 
   191 
       
   192 void ShenandoahRootUpdater::strong_roots_do(uint worker_id, OopClosure* oops_cl) {
       
   193   CodeBlobToOopClosure update_blobs(oops_cl, CodeBlobToOopClosure::FixRelocations);
       
   194   CLDToOopClosure clds(oops_cl, ClassLoaderData::_claim_strong);
       
   195 
       
   196   _serial_roots.oops_do(oops_cl, worker_id);
       
   197   _vm_roots.oops_do(oops_cl, worker_id);
       
   198 
       
   199   _thread_roots.oops_do(oops_cl, NULL, worker_id);
       
   200   _cld_roots.cld_do(&clds, worker_id);
       
   201   _code_roots.code_blobs_do(&update_blobs, worker_id);
       
   202 }
       
   203 
   192 ShenandoahRootAdjuster::ShenandoahRootAdjuster(uint n_workers, ShenandoahPhaseTimings::Phase phase) :
   204 ShenandoahRootAdjuster::ShenandoahRootAdjuster(uint n_workers, ShenandoahPhaseTimings::Phase phase) :
   193   ShenandoahRootProcessor(phase),
   205   ShenandoahRootProcessor(phase),
   194   _thread_roots(n_workers > 1) {
   206   _thread_roots(n_workers > 1) {
   195   assert(ShenandoahHeap::heap()->is_full_gc_in_progress(), "Full GC only");
   207   assert(ShenandoahHeap::heap()->is_full_gc_in_progress(), "Full GC only");
   196 }
   208 }