Skip to content
  • ggaren@apple.com's avatar
    2011-02-17 Geoffrey Garen <ggaren@apple.com> · 7e180265
    ggaren@apple.com authored
            Reviewed by Sam Weinig.
    
            Removed the invariant that the last cell in a block is always marked
            https://bugs.webkit.org/show_bug.cgi?id=54713
            
            SunSpider reports no change.
            
            This adds one branch to allocation, but simplifies the mark invariant,
            especially in a world of variable-sized cells. Now, it really is true
            that any cell whose mark bit is set is a valid, live cell whose
            constructor has run and whose destructor has not run.
    
            * runtime/JSCell.h: 
            (JSC::JSCell::MarkedBlock::allocate): Changed this do-while into a while
            since we can no longer rely on a set mark bit to break out of this loop
            before it reaches the end of the block.
    
            * runtime/MarkedBlock.cpp:
            (JSC::MarkedBlock::MarkedBlock):
            (JSC::MarkedBlock::sweep): 
            * runtime/MarkedBlock.h:
            (JSC::MarkedBlock::isEmpty):
            (JSC::MarkedBlock::clearMarks):
            (JSC::MarkedBlock::markCount):
            (JSC::MarkedBlock::forEach): No need to set a special last mark bit.
    
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@78954 268f45cc-cd09-0410-ab3c-d52691b4dbfc
    7e180265