Ignore:
Timestamp:
Nov 14, 2011, 10:58:19 PM (14 years ago)
Author:
[email protected]
Message:

Weak reference harvesters should run to fixpoint
https://bugs.webkit.org/show_bug.cgi?id=72346

Reviewed by Oliver Hunt.

  • heap/Heap.cpp:

(JSC::Heap::markRoots):

  • heap/ListableHandler.h:

(JSC::ListableHandler::next):
(JSC::ListableHandler::List::head):
(JSC::ListableHandler::List::removeNext):
(JSC::ListableHandler::List::removeAll):

  • heap/MarkStack.cpp:

(JSC::MarkStackThreadSharedData::reset):
(JSC::SlotVisitor::harvestWeakReferences):

  • heap/MarkStack.h:

(JSC::MarkStack::isEmpty):

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/JavaScriptCore/heap/Heap.cpp

    r99898 r100242  
    685685    {
    686686        GCPHASE(VisitingWeakHandles);
    687         int lastOpaqueRootCount;
    688         do {
    689             lastOpaqueRootCount = visitor.opaqueRootCount();
     687        while (true) {
    690688            m_handleHeap.visitWeakHandles(heapRootVisitor);
     689            harvestWeakReferences();
     690            if (visitor.isEmpty())
     691                break;
    691692            {
    692693                ParallelModeEnabler enabler(visitor);
     
    696697#endif
    697698            }
    698             // If the set of opaque roots has grown, more weak handles may have become reachable.
    699         } while (lastOpaqueRootCount != visitor.opaqueRootCount());
     699        }
    700700    }
    701701    GCCOUNTER(VisitedValueCount, visitor.visitCount());
    702 
    703     {
    704         GCPHASE(HarvestWeakReferences);
    705         harvestWeakReferences();
    706     }
    707702
    708703    visitor.reset();
Note: See TracChangeset for help on using the changeset viewer.