Changeset 184666 in webkit


Ignore:
Timestamp:
May 20, 2015, 3:25:20 PM (10 years ago)
Author:
akling@apple.com
Message:

Remove unused MarkedBlock::m_rememberedSet.
<https://webkit.org/b/145224>

Reviewed by Mark Hahnenberg.

The MarkedBlock had a copy of the remembered bit for each of its cells,
and we were maintaining that bitmap despite no one actually ever consulting it.

This patch removes MarkedBlock::m_rememberedSet, freeing up 128 bytes in each
block and making write barriers a little faster.

  • heap/Heap.cpp:

(JSC::Heap::clearRememberedSet):
(JSC::Heap::addToRememberedSet):

  • heap/HeapInlines.h:

(JSC::Heap::isRemembered):

  • heap/MarkedBlock.cpp:

(JSC::MarkedBlock::clearRememberedSet): Deleted.
(JSC::MarkedBlock::clearMarksWithCollectionType):

  • heap/MarkedBlock.h:

(JSC::MarkedBlock::setRemembered): Deleted.
(JSC::MarkedBlock::clearRemembered): Deleted.
(JSC::MarkedBlock::atomicClearRemembered): Deleted.
(JSC::MarkedBlock::isRemembered): Deleted.

  • heap/MarkedSpace.h:

(JSC::ClearRememberedSet::operator()): Deleted.
(JSC::MarkedSpace::clearRememberedSet): Deleted.

Location:
trunk/Source/JavaScriptCore
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/JavaScriptCore/ChangeLog

    r184652 r184666  
     12015-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
    1312015-05-20  Andreas Kling  <akling@apple.com>
    232
  • trunk/Source/JavaScriptCore/heap/Heap.cpp

    r184652 r184666  
    799799#if ENABLE(GGC)
    800800    GCPHASE(ClearRememberedSet);
    801     for (auto* cell : rememberedSet) {
    802         MarkedBlock::blockFor(cell)->clearRemembered(cell);
     801    for (auto* cell : rememberedSet)
    803802        const_cast<JSCell*>(cell)->setRemembered(false);
    804     }
    805803#else
    806804    UNUSED_PARAM(rememberedSet);
     
    976974    if (isRemembered(cell))
    977975        return;
    978     MarkedBlock::blockFor(cell)->setRemembered(cell);
    979976    const_cast<JSCell*>(cell)->setRemembered(true);
    980977    m_slotVisitor.unconditionallyAppend(const_cast<JSCell*>(cell));
  • trunk/Source/JavaScriptCore/heap/HeapInlines.h

    r182747 r184666  
    7676    ASSERT(cell);
    7777    ASSERT(!Options::enableConcurrentJIT() || !isCompilationThread());
    78     ASSERT(MarkedBlock::blockFor(cell)->isRemembered(cell) == cell->isRemembered());
    7978    return cell->isRemembered();
    8079}
  • trunk/Source/JavaScriptCore/heap/MarkedBlock.cpp

    r184019 r184666  
    219219}
    220220
    221 void MarkedBlock::clearRememberedSet()
    222 {
    223     m_rememberedSet.clearAll();
    224 }
    225 
    226221template <HeapOperation collectionType>
    227222void MarkedBlock::clearMarksWithCollectionType()
     
    233228    if (collectionType == FullCollection) {
    234229        m_marks.clearAll();
    235 #if ENABLE(GGC)
    236         m_rememberedSet.clearAll();
    237 #endif
    238230        // This will become true at the end of the mark phase. We set it now to
    239231        // avoid an extra pass to do so later.
  • trunk/Source/JavaScriptCore/heap/MarkedBlock.h

    r183769 r184666  
    148148        bool clearNewlyAllocated();
    149149        void clearMarks();
    150         void clearRememberedSet();
    151150        template <HeapOperation collectionType>
    152151        void clearMarksWithCollectionType();
     
    210209#if ENABLE(PARALLEL_GC)
    211210        WTF::Bitmap<atomsPerBlock, WTF::BitmapAtomic, uint8_t> m_marks;
    212         WTF::Bitmap<atomsPerBlock, WTF::BitmapAtomic, uint8_t> m_rememberedSet;
    213211#else
    214212        WTF::Bitmap<atomsPerBlock, WTF::BitmapNotAtomic, uint8_t> m_marks;
    215         WTF::Bitmap<atomsPerBlock, WTF::BitmapNotAtomic, uint8_t> m_rememberedSet;
    216213#endif
    217214        std::unique_ptr<WTF::Bitmap<atomsPerBlock>> m_newlyAllocated;
     
    346343    {
    347344        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));
    368345    }
    369346
  • trunk/Source/JavaScriptCore/heap/MarkedSpace.h

    r183124 r184666  
    4949    {
    5050        block->clearMarks();
    51     }
    52 };
    53 
    54 struct ClearRememberedSet : MarkedBlock::VoidFunctor {
    55     void operator()(MarkedBlock* block)
    56     {
    57         block->clearRememberedSet();
    5851    }
    5952};
     
    143136
    144137    void clearMarks();
    145     void clearRememberedSet();
    146138    void clearNewlyAllocated();
    147139    void sweep();
     
    278270}
    279271
    280 inline void MarkedSpace::clearRememberedSet()
    281 {
    282     forEachBlock<ClearRememberedSet>();
    283 }
    284 
    285272inline size_t MarkedSpace::objectCount()
    286273{
Note: See TracChangeset for help on using the changeset viewer.