Ignore:
Timestamp:
Sep 8, 2013, 4:36:40 PM (12 years ago)
Author:
[email protected]
Message:

Clearing MarkedBlock::m_newlyAllocated should be separate from MarkedBlock::clearMarks
https://bugs.webkit.org/show_bug.cgi?id=121007

Reviewed by Oliver Hunt.

We call clearMarks on every MarkedBlock in the Heap, whereas we only need to clear
m_newlyAllocated for the m_currentBlock at the time of the last canonicalizeCellLiveness()
for each MarkedAllocator. We also need to call it on every block in the largeAllocators
because each one of their blocks is canonicalized as it is used.

  • heap/Heap.cpp:

(JSC::Heap::markRoots):

  • heap/MarkedAllocator.h:

(JSC::MarkedAllocator::getAndClearCanonicalizedBlock):
(JSC::MarkedAllocator::MarkedAllocator):
(JSC::MarkedAllocator::canonicalizeCellLivenessData):

  • heap/MarkedBlock.h:

(JSC::MarkedBlock::lastChanceToFinalize):
(JSC::MarkedBlock::clearMarks):
(JSC::MarkedBlock::clearNewlyAllocated):

  • heap/MarkedSpace.cpp:

(JSC::clearNewlyAllocatedInBlock):
(JSC::ClearNewlyAllocated::operator()):
(JSC::MarkedSpace::clearNewlyAllocated):

  • heap/MarkedSpace.h:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/JavaScriptCore/heap/Heap.cpp

    r154986 r155316  
    468468
    469469    {
    470         GCPHASE(clearMarks);
     470        GCPHASE(ClearLivenessData);
     471        m_objectSpace.clearNewlyAllocated();
    471472        m_objectSpace.clearMarks();
    472473    }
Note: See TracChangeset for help on using the changeset viewer.