Changeset 184666 in webkit
- Timestamp:
- May 20, 2015, 3:25:20 PM (10 years ago)
- Location:
- trunk/Source/JavaScriptCore
- Files:
-
- 6 edited
-
ChangeLog (modified) (1 diff)
-
heap/Heap.cpp (modified) (2 diffs)
-
heap/HeapInlines.h (modified) (1 diff)
-
heap/MarkedBlock.cpp (modified) (2 diffs)
-
heap/MarkedBlock.h (modified) (3 diffs)
-
heap/MarkedSpace.h (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/JavaScriptCore/ChangeLog
r184652 r184666 1 2015-05-20 Andreas Kling <akling@apple.com> 2 3 Remove unused MarkedBlock::m_rememberedSet. 4 <https://webkit.org/b/145224> 5 6 Reviewed by Mark Hahnenberg. 7 8 The MarkedBlock had a copy of the remembered bit for each of its cells, 9 and we were maintaining that bitmap despite no one actually ever consulting it. 10 11 This patch removes MarkedBlock::m_rememberedSet, freeing up 128 bytes in each 12 block and making write barriers a little faster. 13 14 * heap/Heap.cpp: 15 (JSC::Heap::clearRememberedSet): 16 (JSC::Heap::addToRememberedSet): 17 * heap/HeapInlines.h: 18 (JSC::Heap::isRemembered): 19 * heap/MarkedBlock.cpp: 20 (JSC::MarkedBlock::clearRememberedSet): Deleted. 21 (JSC::MarkedBlock::clearMarksWithCollectionType): 22 * heap/MarkedBlock.h: 23 (JSC::MarkedBlock::setRemembered): Deleted. 24 (JSC::MarkedBlock::clearRemembered): Deleted. 25 (JSC::MarkedBlock::atomicClearRemembered): Deleted. 26 (JSC::MarkedBlock::isRemembered): Deleted. 27 * heap/MarkedSpace.h: 28 (JSC::ClearRememberedSet::operator()): Deleted. 29 (JSC::MarkedSpace::clearRememberedSet): Deleted. 30 1 31 2015-05-20 Andreas Kling <akling@apple.com> 2 32 -
trunk/Source/JavaScriptCore/heap/Heap.cpp
r184652 r184666 799 799 #if ENABLE(GGC) 800 800 GCPHASE(ClearRememberedSet); 801 for (auto* cell : rememberedSet) { 802 MarkedBlock::blockFor(cell)->clearRemembered(cell); 801 for (auto* cell : rememberedSet) 803 802 const_cast<JSCell*>(cell)->setRemembered(false); 804 }805 803 #else 806 804 UNUSED_PARAM(rememberedSet); … … 976 974 if (isRemembered(cell)) 977 975 return; 978 MarkedBlock::blockFor(cell)->setRemembered(cell);979 976 const_cast<JSCell*>(cell)->setRemembered(true); 980 977 m_slotVisitor.unconditionallyAppend(const_cast<JSCell*>(cell)); -
trunk/Source/JavaScriptCore/heap/HeapInlines.h
r182747 r184666 76 76 ASSERT(cell); 77 77 ASSERT(!Options::enableConcurrentJIT() || !isCompilationThread()); 78 ASSERT(MarkedBlock::blockFor(cell)->isRemembered(cell) == cell->isRemembered());79 78 return cell->isRemembered(); 80 79 } -
trunk/Source/JavaScriptCore/heap/MarkedBlock.cpp
r184019 r184666 219 219 } 220 220 221 void MarkedBlock::clearRememberedSet()222 {223 m_rememberedSet.clearAll();224 }225 226 221 template <HeapOperation collectionType> 227 222 void MarkedBlock::clearMarksWithCollectionType() … … 233 228 if (collectionType == FullCollection) { 234 229 m_marks.clearAll(); 235 #if ENABLE(GGC)236 m_rememberedSet.clearAll();237 #endif238 230 // This will become true at the end of the mark phase. We set it now to 239 231 // avoid an extra pass to do so later. -
trunk/Source/JavaScriptCore/heap/MarkedBlock.h
r183769 r184666 148 148 bool clearNewlyAllocated(); 149 149 void clearMarks(); 150 void clearRememberedSet();151 150 template <HeapOperation collectionType> 152 151 void clearMarksWithCollectionType(); … … 210 209 #if ENABLE(PARALLEL_GC) 211 210 WTF::Bitmap<atomsPerBlock, WTF::BitmapAtomic, uint8_t> m_marks; 212 WTF::Bitmap<atomsPerBlock, WTF::BitmapAtomic, uint8_t> m_rememberedSet;213 211 #else 214 212 WTF::Bitmap<atomsPerBlock, WTF::BitmapNotAtomic, uint8_t> m_marks; 215 WTF::Bitmap<atomsPerBlock, WTF::BitmapNotAtomic, uint8_t> m_rememberedSet;216 213 #endif 217 214 std::unique_ptr<WTF::Bitmap<atomsPerBlock>> m_newlyAllocated; … … 346 343 { 347 344 return (reinterpret_cast<Bits>(p) - reinterpret_cast<Bits>(this)) / atomSize; 348 }349 350 inline void MarkedBlock::setRemembered(const void* p)351 {352 m_rememberedSet.set(atomNumber(p));353 }354 355 inline void MarkedBlock::clearRemembered(const void* p)356 {357 m_rememberedSet.clear(atomNumber(p));358 }359 360 inline void MarkedBlock::atomicClearRemembered(const void* p)361 {362 m_rememberedSet.concurrentTestAndClear(atomNumber(p));363 }364 365 inline bool MarkedBlock::isRemembered(const void* p)366 {367 return m_rememberedSet.get(atomNumber(p));368 345 } 369 346 -
trunk/Source/JavaScriptCore/heap/MarkedSpace.h
r183124 r184666 49 49 { 50 50 block->clearMarks(); 51 }52 };53 54 struct ClearRememberedSet : MarkedBlock::VoidFunctor {55 void operator()(MarkedBlock* block)56 {57 block->clearRememberedSet();58 51 } 59 52 }; … … 143 136 144 137 void clearMarks(); 145 void clearRememberedSet();146 138 void clearNewlyAllocated(); 147 139 void sweep(); … … 278 270 } 279 271 280 inline void MarkedSpace::clearRememberedSet()281 {282 forEachBlock<ClearRememberedSet>();283 }284 285 272 inline size_t MarkedSpace::objectCount() 286 273 {
Note:
See TracChangeset
for help on using the changeset viewer.