src/hotspot/share/gc/shenandoah/shenandoahConcurrentMark.cpp
changeset 57732 23e13076e102
parent 55760 bf8128faace1
child 58604 791217cdc433
equal deleted inserted replaced
57731:a414a1b8884a 57732:23e13076e102
   274   }
   274   }
   275 }
   275 }
   276 
   276 
   277 void ShenandoahConcurrentMark::update_roots(ShenandoahPhaseTimings::Phase root_phase) {
   277 void ShenandoahConcurrentMark::update_roots(ShenandoahPhaseTimings::Phase root_phase) {
   278   assert(ShenandoahSafepoint::is_at_shenandoah_safepoint(), "Must be at a safepoint");
   278   assert(ShenandoahSafepoint::is_at_shenandoah_safepoint(), "Must be at a safepoint");
   279 
   279   assert(root_phase == ShenandoahPhaseTimings::full_gc_roots ||
   280   bool update_code_cache = true; // initialize to safer value
   280          root_phase == ShenandoahPhaseTimings::degen_gc_update_roots,
   281   switch (root_phase) {
   281          "Only for these phases");
   282     case ShenandoahPhaseTimings::update_roots:
       
   283     case ShenandoahPhaseTimings::final_update_refs_roots:
       
   284       update_code_cache = false;
       
   285       break;
       
   286     case ShenandoahPhaseTimings::full_gc_roots:
       
   287     case ShenandoahPhaseTimings::degen_gc_update_roots:
       
   288       update_code_cache = true;
       
   289       break;
       
   290     default:
       
   291       ShouldNotReachHere();
       
   292   }
       
   293 
   282 
   294   ShenandoahGCPhase phase(root_phase);
   283   ShenandoahGCPhase phase(root_phase);
   295 
   284 
   296 #if COMPILER2_OR_JVMCI
   285 #if COMPILER2_OR_JVMCI
   297   DerivedPointerTable::clear();
   286   DerivedPointerTable::clear();
   298 #endif
   287 #endif
   299 
   288 
   300   uint nworkers = _heap->workers()->active_workers();
   289   uint nworkers = _heap->workers()->active_workers();
   301 
   290 
   302   ShenandoahRootUpdater root_updater(nworkers, root_phase, update_code_cache);
   291   ShenandoahRootUpdater root_updater(nworkers, root_phase);
   303   ShenandoahUpdateRootsTask update_roots(&root_updater);
   292   ShenandoahUpdateRootsTask update_roots(&root_updater);
   304   _heap->workers()->run_task(&update_roots);
   293   _heap->workers()->run_task(&update_roots);
   305 
   294 
   306 #if COMPILER2_OR_JVMCI
   295 #if COMPILER2_OR_JVMCI
   307   DerivedPointerTable::update_pointers();
   296   DerivedPointerTable::update_pointers();