< prev index next >

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

Print this page
rev 58162 : 8237632: Shenandoah fails some vmTestbase_nsk_jvmti tests with "Forwardee must point to a heap address"


 264 
 265  void ShenandoahHeapIterationRootScanner::roots_do(OopClosure* oops) {
 266    assert(Thread::current()->is_VM_thread(), "Only by VM thread");
 267    // Must use _claim_none to avoid interfering with concurrent CLDG iteration
 268    CLDToOopClosure clds(oops, ClassLoaderData::_claim_none);
 269    MarkingCodeBlobClosure code(oops, !CodeBlobToOopClosure::FixRelocations);
 270    ShenandoahParallelOopsDoThreadClosure tc_cl(oops, &code, NULL);
 271    AlwaysTrueClosure always_true;
 272    ResourceMark rm;
 273 
 274    _serial_roots.oops_do(oops, 0);
 275    _vm_roots.oops_do(oops, 0);
 276    _cld_roots.cld_do(&clds, 0);
 277    _thread_roots.threads_do(&tc_cl, 0);
 278    _code_roots.code_blobs_do(&code, 0);
 279 
 280    _serial_weak_roots.weak_oops_do(oops, 0);
 281    _weak_roots.oops_do<OopClosure>(oops, 0);
 282    _dedup_roots.oops_do(&always_true, oops, 0);
 283  }
 284 
 285  void ShenandoahHeapIterationRootScanner::strong_roots_do(OopClosure* oops) {
 286    assert(Thread::current()->is_VM_thread(), "Only by VM thread");
 287    // Must use _claim_none to avoid interfering with concurrent CLDG iteration
 288    CLDToOopClosure clds(oops, ClassLoaderData::_claim_none);
 289    MarkingCodeBlobClosure code(oops, !CodeBlobToOopClosure::FixRelocations);
 290    ShenandoahParallelOopsDoThreadClosure tc_cl(oops, &code, NULL);
 291    ResourceMark rm;
 292 
 293    _serial_roots.oops_do(oops, 0);
 294    _vm_roots.oops_do(oops, 0);
 295    _cld_roots.always_strong_cld_do(&clds, 0);
 296    _thread_roots.threads_do(&tc_cl, 0);
 297  }


 264 
 265  void ShenandoahHeapIterationRootScanner::roots_do(OopClosure* oops) {
 266    assert(Thread::current()->is_VM_thread(), "Only by VM thread");
 267    // Must use _claim_none to avoid interfering with concurrent CLDG iteration
 268    CLDToOopClosure clds(oops, ClassLoaderData::_claim_none);
 269    MarkingCodeBlobClosure code(oops, !CodeBlobToOopClosure::FixRelocations);
 270    ShenandoahParallelOopsDoThreadClosure tc_cl(oops, &code, NULL);
 271    AlwaysTrueClosure always_true;
 272    ResourceMark rm;
 273 
 274    _serial_roots.oops_do(oops, 0);
 275    _vm_roots.oops_do(oops, 0);
 276    _cld_roots.cld_do(&clds, 0);
 277    _thread_roots.threads_do(&tc_cl, 0);
 278    _code_roots.code_blobs_do(&code, 0);
 279 
 280    _serial_weak_roots.weak_oops_do(oops, 0);
 281    _weak_roots.oops_do<OopClosure>(oops, 0);
 282    _dedup_roots.oops_do(&always_true, oops, 0);
 283  }














< prev index next >