src/hotspot/share/gc/shenandoah/shenandoahRootProcessor.cpp
changeset 54882 b99e97bc5040
parent 54825 1b03400e5a8f
child 54924 ba1eccda5450
equal deleted inserted replaced
54881:80991d58b947 54882:b99e97bc5040
    73   }
    73   }
    74 
    74 
    75   ShenandoahHeap::heap()->phase_timings()->record_workers_end(_phase);
    75   ShenandoahHeap::heap()->phase_timings()->record_workers_end(_phase);
    76 }
    76 }
    77 
    77 
    78 void ShenandoahRootProcessor::process_all_roots_slow(OopClosure* oops) {
       
    79   CLDToOopClosure clds(oops, ClassLoaderData::_claim_strong);
       
    80   CodeBlobToOopClosure blobs(oops, !CodeBlobToOopClosure::FixRelocations);
       
    81 
       
    82   CodeCache::blobs_do(&blobs);
       
    83   ClassLoaderDataGraph::cld_do(&clds);
       
    84   Universe::oops_do(oops);
       
    85   Management::oops_do(oops);
       
    86   JvmtiExport::oops_do(oops);
       
    87   JNIHandles::oops_do(oops);
       
    88   ObjectSynchronizer::oops_do(oops);
       
    89   SystemDictionary::oops_do(oops);
       
    90 
       
    91   AlwaysTrueClosure always_true;
       
    92   WeakProcessor::weak_oops_do(&always_true, oops);
       
    93 
       
    94   if (ShenandoahStringDedup::is_enabled()) {
       
    95     ShenandoahStringDedup::oops_do_slow(oops);
       
    96   }
       
    97 
       
    98   // Do thread roots the last. This allows verification code to find
       
    99   // any broken objects from those special roots first, not the accidental
       
   100   // dangling reference from the thread root.
       
   101   Threads::possibly_parallel_oops_do(false, oops, &blobs);
       
   102 }
       
   103 
       
   104 void ShenandoahRootProcessor::process_strong_roots(OopClosure* oops,
    78 void ShenandoahRootProcessor::process_strong_roots(OopClosure* oops,
   105                                                    CLDClosure* clds,
    79                                                    CLDClosure* clds,
   106                                                    CodeBlobClosure* blobs,
    80                                                    CodeBlobClosure* blobs,
   107                                                    ThreadClosure* thread_cl,
    81                                                    ThreadClosure* thread_cl,
   108                                                    uint worker_id) {
    82                                                    uint worker_id) {