< prev index next >

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

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


 167 
 168 void ShenandoahRootEvacuator::roots_do(uint worker_id, OopClosure* oops) {
 169   MarkingCodeBlobClosure blobsCl(oops, CodeBlobToOopClosure::FixRelocations);
 170   AlwaysTrueClosure always_true;
 171 
 172   _serial_roots.oops_do(oops, worker_id);
 173   _serial_weak_roots.weak_oops_do(oops, worker_id);
 174   if (_include_concurrent_roots) {
 175     CLDToOopClosure clds(oops, ClassLoaderData::_claim_strong);
 176     _vm_roots.oops_do<OopClosure>(oops, worker_id);
 177     _cld_roots.cld_do(&clds, worker_id);
 178     _weak_roots.oops_do<OopClosure>(oops, worker_id);
 179   }
 180 
 181   _thread_roots.oops_do(oops, NULL, worker_id);
 182   _code_roots.code_blobs_do(&blobsCl, worker_id);
 183 
 184   _dedup_roots.oops_do(&always_true, oops, worker_id);
 185 }
 186 
 187 ShenandoahRootUpdater::ShenandoahRootUpdater(uint n_workers, ShenandoahPhaseTimings::Phase phase, bool update_code_cache) :
 188   ShenandoahRootProcessor(phase),
 189   _thread_roots(n_workers > 1),
 190   _update_code_cache(update_code_cache) {
 191 }
 192 
 193 ShenandoahRootAdjuster::ShenandoahRootAdjuster(uint n_workers, ShenandoahPhaseTimings::Phase phase) :
 194   ShenandoahRootProcessor(phase),
 195   _thread_roots(n_workers > 1) {
 196   assert(ShenandoahHeap::heap()->is_full_gc_in_progress(), "Full GC only");
 197 }
 198 
 199 void ShenandoahRootAdjuster::roots_do(uint worker_id, OopClosure* oops) {
 200   CodeBlobToOopClosure adjust_code_closure(oops, CodeBlobToOopClosure::FixRelocations);
 201   CLDToOopClosure adjust_cld_closure(oops, ClassLoaderData::_claim_strong);
 202   AlwaysTrueClosure always_true;
 203 
 204   _serial_roots.oops_do(oops, worker_id);
 205   _vm_roots.oops_do(oops, worker_id);
 206 
 207   _thread_roots.oops_do(oops, NULL, worker_id);
 208   _cld_roots.cld_do(&adjust_cld_closure, worker_id);
 209   _code_roots.code_blobs_do(&adjust_code_closure, worker_id);
 210 




 167 
 168 void ShenandoahRootEvacuator::roots_do(uint worker_id, OopClosure* oops) {
 169   MarkingCodeBlobClosure blobsCl(oops, CodeBlobToOopClosure::FixRelocations);
 170   AlwaysTrueClosure always_true;
 171 
 172   _serial_roots.oops_do(oops, worker_id);
 173   _serial_weak_roots.weak_oops_do(oops, worker_id);
 174   if (_include_concurrent_roots) {
 175     CLDToOopClosure clds(oops, ClassLoaderData::_claim_strong);
 176     _vm_roots.oops_do<OopClosure>(oops, worker_id);
 177     _cld_roots.cld_do(&clds, worker_id);
 178     _weak_roots.oops_do<OopClosure>(oops, worker_id);
 179   }
 180 
 181   _thread_roots.oops_do(oops, NULL, worker_id);
 182   _code_roots.code_blobs_do(&blobsCl, worker_id);
 183 
 184   _dedup_roots.oops_do(&always_true, oops, worker_id);
 185 }
 186 
 187 ShenandoahRootUpdater::ShenandoahRootUpdater(uint n_workers, ShenandoahPhaseTimings::Phase phase) :
 188   ShenandoahRootProcessor(phase),
 189   _thread_roots(n_workers > 1) {

 190 }
 191 
 192 ShenandoahRootAdjuster::ShenandoahRootAdjuster(uint n_workers, ShenandoahPhaseTimings::Phase phase) :
 193   ShenandoahRootProcessor(phase),
 194   _thread_roots(n_workers > 1) {
 195   assert(ShenandoahHeap::heap()->is_full_gc_in_progress(), "Full GC only");
 196 }
 197 
 198 void ShenandoahRootAdjuster::roots_do(uint worker_id, OopClosure* oops) {
 199   CodeBlobToOopClosure adjust_code_closure(oops, CodeBlobToOopClosure::FixRelocations);
 200   CLDToOopClosure adjust_cld_closure(oops, ClassLoaderData::_claim_strong);
 201   AlwaysTrueClosure always_true;
 202 
 203   _serial_roots.oops_do(oops, worker_id);
 204   _vm_roots.oops_do(oops, worker_id);
 205 
 206   _thread_roots.oops_do(oops, NULL, worker_id);
 207   _cld_roots.cld_do(&adjust_cld_closure, worker_id);
 208   _code_roots.code_blobs_do(&adjust_code_closure, worker_id);
 209 


< prev index next >