src/hotspot/share/gc/shenandoah/shenandoahRootProcessor.cpp
changeset 58233 89033e6641ed
parent 57732 23e13076e102
child 58679 9c3209ff7550
child 58686 0279391875bf
equal deleted inserted replaced
58232:de9d23469c68 58233:89033e6641ed
   221    assert(Thread::current()->is_VM_thread(), "Only by VM thread");
   221    assert(Thread::current()->is_VM_thread(), "Only by VM thread");
   222    // Must use _claim_none to avoid interfering with concurrent CLDG iteration
   222    // Must use _claim_none to avoid interfering with concurrent CLDG iteration
   223    CLDToOopClosure clds(oops, ClassLoaderData::_claim_none);
   223    CLDToOopClosure clds(oops, ClassLoaderData::_claim_none);
   224    MarkingCodeBlobClosure code(oops, !CodeBlobToOopClosure::FixRelocations);
   224    MarkingCodeBlobClosure code(oops, !CodeBlobToOopClosure::FixRelocations);
   225    ShenandoahParallelOopsDoThreadClosure tc_cl(oops, &code, NULL);
   225    ShenandoahParallelOopsDoThreadClosure tc_cl(oops, &code, NULL);
       
   226    AlwaysTrueClosure always_true;
   226    ResourceMark rm;
   227    ResourceMark rm;
   227 
   228 
   228    _serial_roots.oops_do(oops, 0);
   229    _serial_roots.oops_do(oops, 0);
   229    _vm_roots.oops_do(oops, 0);
   230    _vm_roots.oops_do(oops, 0);
   230    _cld_roots.cld_do(&clds, 0);
   231    _cld_roots.cld_do(&clds, 0);
   231    _thread_roots.threads_do(&tc_cl, 0);
   232    _thread_roots.threads_do(&tc_cl, 0);
   232    _code_roots.code_blobs_do(&code, 0);
   233    _code_roots.code_blobs_do(&code, 0);
       
   234 
       
   235    _serial_weak_roots.weak_oops_do(oops, 0);
       
   236    _weak_roots.oops_do<OopClosure>(oops, 0);
       
   237    _dedup_roots.oops_do(&always_true, oops, 0);
   233  }
   238  }
   234 
   239 
   235  void ShenandoahHeapIterationRootScanner::strong_roots_do(OopClosure* oops) {
   240  void ShenandoahHeapIterationRootScanner::strong_roots_do(OopClosure* oops) {
   236    assert(Thread::current()->is_VM_thread(), "Only by VM thread");
   241    assert(Thread::current()->is_VM_thread(), "Only by VM thread");
   237    // Must use _claim_none to avoid interfering with concurrent CLDG iteration
   242    // Must use _claim_none to avoid interfering with concurrent CLDG iteration