src/hotspot/share/gc/shenandoah/shenandoahHeap.cpp
changeset 57533 a2912ba36422
parent 55760 bf8128faace1
child 57669 18f189e69b29
equal deleted inserted replaced
57528:3307a6ded22d 57533:a2912ba36422
  1591     AbstractGangTask("Shenandoah Evacuate/Update Concurrent Roots Task") {
  1591     AbstractGangTask("Shenandoah Evacuate/Update Concurrent Roots Task") {
  1592   }
  1592   }
  1593 
  1593 
  1594   void work(uint worker_id) {
  1594   void work(uint worker_id) {
  1595     ShenandoahEvacOOMScope oom;
  1595     ShenandoahEvacOOMScope oom;
  1596     ShenandoahEvacuateUpdateRootsClosure cl;
  1596     {
  1597     CLDToOopClosure clds(&cl, ClassLoaderData::_claim_strong);
  1597       // jni_roots and weak_roots are OopStorage backed roots, concurrent iteration
  1598 
  1598       // may race against OopStorage::release() calls.
  1599     _jni_roots.oops_do<ShenandoahEvacuateUpdateRootsClosure>(&cl);
  1599       ShenandoahEvacUpdateOopStorageRootsClosure cl;
  1600     _cld_roots.cld_do(&clds);
  1600       _jni_roots.oops_do<ShenandoahEvacUpdateOopStorageRootsClosure>(&cl);
  1601     _weak_roots.oops_do<ShenandoahEvacuateUpdateRootsClosure>(&cl);
  1601       _weak_roots.oops_do<ShenandoahEvacUpdateOopStorageRootsClosure>(&cl);
       
  1602     }
       
  1603 
       
  1604     {
       
  1605       ShenandoahEvacuateUpdateRootsClosure cl;
       
  1606       CLDToOopClosure clds(&cl, ClassLoaderData::_claim_strong);
       
  1607       _cld_roots.cld_do(&clds);
       
  1608     }
  1602   }
  1609   }
  1603 };
  1610 };
  1604 
  1611 
  1605 void ShenandoahHeap::op_roots() {
  1612 void ShenandoahHeap::op_roots() {
  1606   if (is_evacuation_in_progress() &&
  1613   if (is_evacuation_in_progress() &&