< prev index next >

src/hotspot/share/gc/shenandoah/shenandoahRootProcessor.inline.hpp

Print this page
rev 55971 : 8229474: Shenandoah: Cleanup CM::update_roots()


 255   assert(ShenandoahHeap::heap()->unload_classes(), "Should be used during class unloading");
 256   ShenandoahParallelOopsDoThreadClosure tc_cl(oops, code, tc);
 257   ResourceMark rm;
 258 
 259   _serial_roots.oops_do(oops, worker_id);
 260   _vm_roots.oops_do(oops, worker_id);
 261   _cld_roots.always_strong_cld_do(clds, worker_id);
 262   _thread_roots.threads_do(&tc_cl, worker_id);
 263 }
 264 
 265 template <typename IsAlive, typename KeepAlive>
 266 void ShenandoahRootUpdater::roots_do(uint worker_id, IsAlive* is_alive, KeepAlive* keep_alive) {
 267   CodeBlobToOopClosure update_blobs(keep_alive, CodeBlobToOopClosure::FixRelocations);
 268   CLDToOopClosure clds(keep_alive, ClassLoaderData::_claim_strong);
 269 
 270   _serial_roots.oops_do(keep_alive, worker_id);
 271   _vm_roots.oops_do(keep_alive, worker_id);
 272 
 273   _thread_roots.oops_do(keep_alive, NULL, worker_id);
 274   _cld_roots.cld_do(&clds, worker_id);
 275 
 276   if(_update_code_cache) {
 277     _code_roots.code_blobs_do(&update_blobs, worker_id);
 278   }
 279 
 280   _serial_weak_roots.weak_oops_do(is_alive, keep_alive, worker_id);
 281   _weak_roots.weak_oops_do(is_alive, keep_alive, worker_id);
 282   _dedup_roots.oops_do(is_alive, keep_alive, worker_id);
 283 }
 284 
 285 #endif // SHARE_GC_SHENANDOAH_SHENANDOAHROOTPROCESSOR_INLINE_HPP


 255   assert(ShenandoahHeap::heap()->unload_classes(), "Should be used during class unloading");
 256   ShenandoahParallelOopsDoThreadClosure tc_cl(oops, code, tc);
 257   ResourceMark rm;
 258 
 259   _serial_roots.oops_do(oops, worker_id);
 260   _vm_roots.oops_do(oops, worker_id);
 261   _cld_roots.always_strong_cld_do(clds, worker_id);
 262   _thread_roots.threads_do(&tc_cl, worker_id);
 263 }
 264 
 265 template <typename IsAlive, typename KeepAlive>
 266 void ShenandoahRootUpdater::roots_do(uint worker_id, IsAlive* is_alive, KeepAlive* keep_alive) {
 267   CodeBlobToOopClosure update_blobs(keep_alive, CodeBlobToOopClosure::FixRelocations);
 268   CLDToOopClosure clds(keep_alive, ClassLoaderData::_claim_strong);
 269 
 270   _serial_roots.oops_do(keep_alive, worker_id);
 271   _vm_roots.oops_do(keep_alive, worker_id);
 272 
 273   _thread_roots.oops_do(keep_alive, NULL, worker_id);
 274   _cld_roots.cld_do(&clds, worker_id);


 275   _code_roots.code_blobs_do(&update_blobs, worker_id);

 276 
 277   _serial_weak_roots.weak_oops_do(is_alive, keep_alive, worker_id);
 278   _weak_roots.weak_oops_do(is_alive, keep_alive, worker_id);
 279   _dedup_roots.oops_do(is_alive, keep_alive, worker_id);
 280 }
 281 
 282 #endif // SHARE_GC_SHENANDOAH_SHENANDOAHROOTPROCESSOR_INLINE_HPP
< prev index next >