equal
deleted
inserted
replaced
1580 free_set()->recycle_trash(); |
1580 free_set()->recycle_trash(); |
1581 } |
1581 } |
1582 |
1582 |
1583 class ShenandoahConcurrentRootsEvacUpdateTask : public AbstractGangTask { |
1583 class ShenandoahConcurrentRootsEvacUpdateTask : public AbstractGangTask { |
1584 private: |
1584 private: |
1585 ShenandoahJNIHandleRoots<true /*concurrent*/> _jni_roots; |
1585 ShenandoahVMRoots<true /*concurrent*/> _vm_roots; |
1586 ShenandoahWeakRoots<true /*concurrent*/> _weak_roots; |
1586 ShenandoahWeakRoots<true /*concurrent*/> _weak_roots; |
1587 ShenandoahClassLoaderDataRoots<true /*concurrent*/, false /*single threaded*/> _cld_roots; |
1587 ShenandoahClassLoaderDataRoots<true /*concurrent*/, false /*single threaded*/> _cld_roots; |
1588 |
1588 |
1589 public: |
1589 public: |
1590 ShenandoahConcurrentRootsEvacUpdateTask() : |
1590 ShenandoahConcurrentRootsEvacUpdateTask() : |
1595 ShenandoahEvacOOMScope oom; |
1595 ShenandoahEvacOOMScope oom; |
1596 { |
1596 { |
1597 // jni_roots and weak_roots are OopStorage backed roots, concurrent iteration |
1597 // jni_roots and weak_roots are OopStorage backed roots, concurrent iteration |
1598 // may race against OopStorage::release() calls. |
1598 // may race against OopStorage::release() calls. |
1599 ShenandoahEvacUpdateOopStorageRootsClosure cl; |
1599 ShenandoahEvacUpdateOopStorageRootsClosure cl; |
1600 _jni_roots.oops_do<ShenandoahEvacUpdateOopStorageRootsClosure>(&cl); |
1600 _vm_roots.oops_do<ShenandoahEvacUpdateOopStorageRootsClosure>(&cl); |
1601 _weak_roots.oops_do<ShenandoahEvacUpdateOopStorageRootsClosure>(&cl); |
1601 _weak_roots.oops_do<ShenandoahEvacUpdateOopStorageRootsClosure>(&cl); |
1602 } |
1602 } |
1603 |
1603 |
1604 { |
1604 { |
1605 ShenandoahEvacuateUpdateRootsClosure cl; |
1605 ShenandoahEvacuateUpdateRootsClosure cl; |