Changeset 79087 in webkit


Ignore:
Timestamp:
Feb 18, 2011 8:24:14 PM (13 years ago)
Author:
ggaren@apple.com
Message:

2011-02-18 Geoffrey Garen <ggaren@apple.com>

Reviewed by Sam Weinig.

Made MarkedSpace block iteration size-class agnostic
https://bugs.webkit.org/show_bug.cgi?id=54792


SunSpider reports no change.

  • runtime/MarkedSpace.cpp: (JSC::MarkedSpace::clearMarks): (JSC::MarkedSpace::sweep): (JSC::MarkedSpace::objectCount): (JSC::MarkedSpace::size): (JSC::MarkedSpace::capacity):
  • runtime/MarkedSpace.h: (JSC::MarkedSpace::forEach): Iterate blocks in hashing order instead of size class list order. This is a much simpler convention in a world of many different size classes.
Location:
trunk/Source/JavaScriptCore
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/JavaScriptCore/ChangeLog

    r79083 r79087  
     12011-02-18  Geoffrey Garen  <ggaren@apple.com>
     2
     3        Reviewed by Sam Weinig.
     4
     5        Made MarkedSpace block iteration size-class agnostic
     6        https://bugs.webkit.org/show_bug.cgi?id=54792
     7       
     8        SunSpider reports no change.
     9
     10        * runtime/MarkedSpace.cpp:
     11        (JSC::MarkedSpace::clearMarks):
     12        (JSC::MarkedSpace::sweep):
     13        (JSC::MarkedSpace::objectCount):
     14        (JSC::MarkedSpace::size):
     15        (JSC::MarkedSpace::capacity):
     16        * runtime/MarkedSpace.h:
     17        (JSC::MarkedSpace::forEach): Iterate blocks in hashing order instead of
     18        size class list order. This is a much simpler convention in a world
     19        of many different size classes.
     20
    1212011-02-18  Kristian Amlie  <kristian.amlie@nokia.com>
    222
  • trunk/Source/JavaScriptCore/runtime/MarkedSpace.cpp

    r79079 r79087  
    9494void MarkedSpace::clearMarks()
    9595{
    96     for (size_t i = 0; i < m_heap.blocks.size(); ++i)
    97         m_heap.collectorBlock(i)->clearMarks();
     96    BlockIterator end = m_blocks.end();
     97    for (BlockIterator it = m_blocks.begin(); it != end; ++it)
     98        (*it)->clearMarks();
    9899}
    99100
    100101void MarkedSpace::sweep()
    101102{
    102     for (size_t i = 0; i < m_heap.blocks.size(); ++i)
    103         m_heap.collectorBlock(i)->sweep();
     103    BlockIterator end = m_blocks.end();
     104    for (BlockIterator it = m_blocks.begin(); it != end; ++it)
     105        (*it)->sweep();
    104106}
    105107
     
    107109{
    108110    size_t result = 0;
    109     for (size_t i = 0; i < m_heap.blocks.size(); ++i)
    110         result += m_heap.collectorBlock(i)->markCount();
     111    BlockIterator end = m_blocks.end();
     112    for (BlockIterator it = m_blocks.begin(); it != end; ++it)
     113        result += (*it)->markCount();
    111114    return result;
    112115}
     
    115118{
    116119    size_t result = 0;
    117     for (size_t i = 0; i < m_heap.blocks.size(); ++i)
    118         result += m_heap.collectorBlock(i)->size();
     120    BlockIterator end = m_blocks.end();
     121    for (BlockIterator it = m_blocks.begin(); it != end; ++it)
     122        result += (*it)->size();
    119123    return result;
    120124}
     
    123127{
    124128    size_t result = 0;
    125     for (size_t i = 0; i < m_heap.blocks.size(); ++i)
    126         result += m_heap.collectorBlock(i)->capacity();
     129    BlockIterator end = m_blocks.end();
     130    for (BlockIterator it = m_blocks.begin(); it != end; ++it)
     131        result += (*it)->capacity();
    127132    return result;
    128133}
  • trunk/Source/JavaScriptCore/runtime/MarkedSpace.h

    r79079 r79087  
    9898
    9999    private:
     100        typedef HashSet<MarkedBlock*>::iterator BlockIterator;
     101
    100102        NEVER_INLINE MarkedBlock* allocateBlock();
    101103        NEVER_INLINE void freeBlock(size_t);
     
    144146    template <typename Functor> inline void MarkedSpace::forEach(Functor& functor)
    145147    {
    146         for (size_t i = 0; i < m_heap.blocks.size(); ++i)
    147             m_heap.collectorBlock(i)->forEach(functor);
     148        BlockIterator end = m_blocks.end();
     149        for (BlockIterator it = m_blocks.begin(); it != end; ++it)
     150            (*it)->forEach(functor);
    148151    }
    149152
Note: See TracChangeset for help on using the changeset viewer.