Changeset 118646 in webkit
- Timestamp:
- May 27, 2012 9:56:01 PM (12 years ago)
- Location:
- trunk/Source/JavaScriptCore
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/JavaScriptCore/ChangeLog
r118616 r118646 1 2012-05-27 Geoffrey Garen <ggaren@apple.com> 2 3 Weak pointer finalization should be lazy 4 https://bugs.webkit.org/show_bug.cgi?id=87599 5 6 Reviewed by Darin Adler. 7 8 * heap/Heap.cpp: 9 (JSC::Heap::collect): Don't force immediate finalization -- it will 10 happen lazily. 11 12 * heap/MarkedBlock.cpp: 13 (JSC::MarkedBlock::sweep): Sweep a block's weak set when sweeping the 14 block. The weak set may not have been swept yet, and this is our last 15 chance to run weak finalizers before we recycle the memory they reference. 16 17 * heap/MarkedBlock.h: 18 * heap/MarkedSpace.cpp: 19 (JSC::MarkedBlock::sweepWeakSets): 20 * heap/MarkedSpace.h: 21 (JSC::MarkedSpace::sweepWeakSets): Nixed sweepWeakSets because it's unused 22 now. 23 1 24 2012-05-26 Geoffrey Garen <ggaren@apple.com> 2 25 -
trunk/Source/JavaScriptCore/heap/Heap.cpp
r118416 r118646 688 688 { 689 689 GCPHASE(FinalizeWeakHandles); 690 m_objectSpace.sweepWeakSets();691 690 m_globalData->smallStrings.finalizeSmallStrings(); 692 691 } -
trunk/Source/JavaScriptCore/heap/MarkedBlock.cpp
r118616 r118646 115 115 HEAP_LOG_BLOCK_STATE_TRANSITION(this); 116 116 117 m_weakSet.sweep(); 118 117 119 if (sweepMode == SweepOnly && !m_cellsNeedDestruction) 118 120 return FreeList(); -
trunk/Source/JavaScriptCore/heap/MarkedBlock.h
r118416 r118646 134 134 void visitWeakSet(HeapRootVisitor&); 135 135 void reapWeakSet(); 136 void sweepWeakSet();137 136 138 137 // While allocating from a free list, MarkedBlock temporarily has bogus … … 286 285 { 287 286 m_weakSet.reap(); 288 }289 290 inline void MarkedBlock::sweepWeakSet()291 {292 m_weakSet.sweep();293 287 } 294 288 -
trunk/Source/JavaScriptCore/heap/MarkedSpace.cpp
r118416 r118646 78 78 }; 79 79 80 struct SweepWeakSet : MarkedBlock::VoidFunctor {81 void operator()(MarkedBlock* block) { block->sweepWeakSet(); }82 };83 84 80 MarkedSpace::MarkedSpace(Heap* heap) 85 81 : m_heap(heap) … … 141 137 { 142 138 forEachBlock<ReapWeakSet>(); 143 }144 145 void MarkedSpace::sweepWeakSets()146 {147 forEachBlock<SweepWeakSet>();148 139 } 149 140 -
trunk/Source/JavaScriptCore/heap/MarkedSpace.h
r118416 r118646 86 86 void visitWeakSets(HeapRootVisitor&); 87 87 void reapWeakSets(); 88 void sweepWeakSets();89 88 90 89 MarkedBlockSet& blocks() { return m_blocks; }
Note: See TracChangeset
for help on using the changeset viewer.