Title: [124141] trunk/Source/_javascript_Core
Revision
124141
Author
[email protected]
Date
2012-07-30 18:48:18 -0700 (Mon, 30 Jul 2012)

Log Message

Unreviewed, rolling out r124123.
http://trac.webkit.org/changeset/124123
https://bugs.webkit.org/show_bug.cgi?id=92700

ASSERT crashes terminate webkit Layout tests (Requested by
msaboff on #webkit).

Patch by Sheriff Bot <[email protected]> on 2012-07-30

* heap/Heap.cpp:
* heap/Heap.h:
(Heap):
* heap/IncrementalSweeper.cpp:
(JSC::IncrementalSweeper::doSweep):
(JSC::IncrementalSweeper::startSweeping):
(JSC::IncrementalSweeper::IncrementalSweeper):
(JSC):
* heap/IncrementalSweeper.h:
(IncrementalSweeper):
* heap/MarkedAllocator.cpp:
(JSC::MarkedAllocator::tryAllocateHelper):
(JSC::MarkedAllocator::addBlock):
* heap/MarkedAllocator.h:
(JSC::MarkedAllocator::zapFreeList):
* heap/MarkedBlock.cpp:
(JSC::MarkedBlock::sweepHelper):
* heap/MarkedSpace.cpp:
* heap/MarkedSpace.h:
(JSC::MarkedSpace::sweep):
(JSC):
* runtime/JSGlobalData.cpp:
(JSC::JSGlobalData::~JSGlobalData):

Modified Paths

Diff

Modified: trunk/Source/_javascript_Core/ChangeLog (124140 => 124141)


--- trunk/Source/_javascript_Core/ChangeLog	2012-07-31 01:45:44 UTC (rev 124140)
+++ trunk/Source/_javascript_Core/ChangeLog	2012-07-31 01:48:18 UTC (rev 124141)
@@ -1,3 +1,36 @@
+2012-07-30  Sheriff Bot  <[email protected]>
+
+        Unreviewed, rolling out r124123.
+        http://trac.webkit.org/changeset/124123
+        https://bugs.webkit.org/show_bug.cgi?id=92700
+
+        ASSERT crashes terminate webkit Layout tests (Requested by
+        msaboff on #webkit).
+
+        * heap/Heap.cpp:
+        * heap/Heap.h:
+        (Heap):
+        * heap/IncrementalSweeper.cpp:
+        (JSC::IncrementalSweeper::doSweep):
+        (JSC::IncrementalSweeper::startSweeping):
+        (JSC::IncrementalSweeper::IncrementalSweeper):
+        (JSC):
+        * heap/IncrementalSweeper.h:
+        (IncrementalSweeper):
+        * heap/MarkedAllocator.cpp:
+        (JSC::MarkedAllocator::tryAllocateHelper):
+        (JSC::MarkedAllocator::addBlock):
+        * heap/MarkedAllocator.h:
+        (JSC::MarkedAllocator::zapFreeList):
+        * heap/MarkedBlock.cpp:
+        (JSC::MarkedBlock::sweepHelper):
+        * heap/MarkedSpace.cpp:
+        * heap/MarkedSpace.h:
+        (JSC::MarkedSpace::sweep):
+        (JSC):
+        * runtime/JSGlobalData.cpp:
+        (JSC::JSGlobalData::~JSGlobalData):
+
 2012-07-30  Mark Hahnenberg  <[email protected]>
 
         Structures should be swept after all other objects

Modified: trunk/Source/_javascript_Core/heap/Heap.cpp (124140 => 124141)


--- trunk/Source/_javascript_Core/heap/Heap.cpp	2012-07-31 01:45:44 UTC (rev 124140)
+++ trunk/Source/_javascript_Core/heap/Heap.cpp	2012-07-31 01:48:18 UTC (rev 124141)
@@ -830,18 +830,4 @@
     m_compiledCode.append(executable);
 }
 
-bool Heap::isSafeToSweepStructures()
-{
-    return !m_sweeper || m_sweeper->structuresCanBeSwept();
-}
-
-void Heap::didStartVMShutdown()
-{
-    m_activityCallback->didStartVMShutdown();
-    m_activityCallback = 0;
-    m_sweeper->didStartVMShutdown();
-    m_sweeper = 0;
-    lastChanceToFinalize();
-}
-
 } // namespace JSC

Modified: trunk/Source/_javascript_Core/heap/Heap.h (124140 => 124141)


--- trunk/Source/_javascript_Core/heap/Heap.h	2012-07-31 01:45:44 UTC (rev 124140)
+++ trunk/Source/_javascript_Core/heap/Heap.h	2012-07-31 01:48:18 UTC (rev 124141)
@@ -168,8 +168,6 @@
         void didAbandon(size_t);
 
         bool isPagedOut(double deadline);
-        bool isSafeToSweepStructures();
-        void didStartVMShutdown();
 
     private:
         friend class CodeBlock;

Modified: trunk/Source/_javascript_Core/heap/IncrementalSweeper.cpp (124140 => 124141)


--- trunk/Source/_javascript_Core/heap/IncrementalSweeper.cpp	2012-07-31 01:45:44 UTC (rev 124140)
+++ trunk/Source/_javascript_Core/heap/IncrementalSweeper.cpp	2012-07-31 01:48:18 UTC (rev 124141)
@@ -69,23 +69,10 @@
     CFRunLoopTimerSetNextFireDate(m_timer.get(), CFAbsoluteTimeGetCurrent() + s_decade);
 }
 
-bool IncrementalSweeper::structuresCanBeSwept()
-{
-    ASSERT(m_currentBlockToSweepIndex <= m_blocksToSweep.size());
-    return !m_blocksToSweep.size() || m_currentBlockToSweepIndex >= m_blocksToSweep.size();
-}
-
 void IncrementalSweeper::doSweep(double sweepBeginTime)
 {
     while (m_currentBlockToSweepIndex < m_blocksToSweep.size()) {
-        MarkedBlock* block = m_blocksToSweep[m_currentBlockToSweepIndex];
-        if (block->onlyContainsStructures()) {
-            m_currentBlockToSweepIndex++;
-            continue;
-        }
-
-        m_blocksToSweep[m_currentBlockToSweepIndex++] = 0;
-
+        MarkedBlock* block = m_blocksToSweep[m_currentBlockToSweepIndex++];
         if (!block->needsSweeping())
             continue;
 
@@ -100,29 +87,6 @@
         return;
     }
 
-    while (m_currentStructureBlockToSweepIndex < m_blocksToSweep.size()) {
-        MarkedBlock* block = m_blocksToSweep[m_currentStructureBlockToSweepIndex];
-        if (!block) {
-            m_currentStructureBlockToSweepIndex++;
-            continue;
-        }
-
-        m_blocksToSweep[m_currentStructureBlockToSweepIndex++] = 0;
-
-        if (!block->needsSweeping())
-            continue;
-
-        block->sweep();
-        m_globalData->heap.objectSpace().freeOrShrinkBlock(block);
-
-        CFTimeInterval elapsedTime = WTF::monotonicallyIncreasingTime() - sweepBeginTime;
-        if (elapsedTime < sweepTimeSlice)
-            continue;
-
-        scheduleTimer();
-        return;
-    }
-
     m_blocksToSweep.clear();
     cancelTimer();
 }
@@ -131,23 +95,13 @@
 {
     WTF::copyToVector(blockSnapshot, m_blocksToSweep);
     m_currentBlockToSweepIndex = 0;
-    m_currentStructureBlockToSweepIndex = 0;
     scheduleTimer();
 }
 
-void IncrementalSweeper::willFinishSweeping()
-{
-    m_currentBlockToSweepIndex = m_currentStructureBlockToSweepIndex = 0;
-    m_blocksToSweep.clear();
-    if (m_globalData)
-        cancelTimer();
-}
-
 #else
 
 IncrementalSweeper::IncrementalSweeper(JSGlobalData* globalData)
     : HeapTimer(globalData)
-    , m_structuresCanBeSwept(false)
 {
 }
 
@@ -160,21 +114,10 @@
     return new IncrementalSweeper(heap->globalData());
 }
 
-bool IncrementalSweeper::structuresCanBeSwept()
-{
-    return m_structuresCanBeSwept;
-}
-
 void IncrementalSweeper::startSweeping(const HashSet<MarkedBlock*>&)
 {
-    m_structuresCanBeSwept = false;
 }
-
-void IncrementalSweeper::willFinishSweeping()
-{
-    m_structuresCanBeSwept = true;
-}
-
+    
 #endif
 
 } // namespace JSC

Modified: trunk/Source/_javascript_Core/heap/IncrementalSweeper.h (124140 => 124141)


--- trunk/Source/_javascript_Core/heap/IncrementalSweeper.h	2012-07-31 01:45:44 UTC (rev 124140)
+++ trunk/Source/_javascript_Core/heap/IncrementalSweeper.h	2012-07-31 01:48:18 UTC (rev 124141)
@@ -42,11 +42,8 @@
     static IncrementalSweeper* create(Heap*);
     void startSweeping(const HashSet<MarkedBlock*>& blockSnapshot);
     virtual void doWork();
-    bool structuresCanBeSwept();
-    void willFinishSweeping();
 
 private:
-
 #if USE(CF)
     IncrementalSweeper(Heap*, CFRunLoopRef);
     
@@ -55,14 +52,11 @@
     void cancelTimer();
     
     unsigned m_currentBlockToSweepIndex;
-    unsigned m_currentStructureBlockToSweepIndex;
     Vector<MarkedBlock*> m_blocksToSweep;
 #else
     
     IncrementalSweeper(JSGlobalData*);
-   
-    bool m_structuresCanBeSwept;
-
+    
 #endif
 };
 

Modified: trunk/Source/_javascript_Core/heap/MarkedAllocator.cpp (124140 => 124141)


--- trunk/Source/_javascript_Core/heap/MarkedAllocator.cpp	2012-07-31 01:45:44 UTC (rev 124140)
+++ trunk/Source/_javascript_Core/heap/MarkedAllocator.cpp	2012-07-31 01:48:18 UTC (rev 124141)
@@ -3,7 +3,6 @@
 
 #include "GCActivityCallback.h"
 #include "Heap.h"
-#include "IncrementalSweeper.h"
 #include "JSGlobalData.h"
 #include <wtf/CurrentTime.h>
 
@@ -30,14 +29,6 @@
 inline void* MarkedAllocator::tryAllocateHelper()
 {
     if (!m_freeList.head) {
-        if (m_onlyContainsStructures && !m_heap->isSafeToSweepStructures()) {
-            if (m_currentBlock) {
-                m_currentBlock->didConsumeFreeList();
-                m_currentBlock = 0;
-            }
-            return 0;
-        }
-
         for (MarkedBlock*& block = m_blocksToSweep; block; block = static_cast<MarkedBlock*>(block->next())) {
             m_freeList = block->sweep(MarkedBlock::SweepToFreeList);
             if (m_freeList.head) {
@@ -113,6 +104,7 @@
 void MarkedAllocator::addBlock(MarkedBlock* block)
 {
     ASSERT(!m_currentBlock);
+    ASSERT(!m_blocksToSweep);
     ASSERT(!m_freeList.head);
     
     m_blockList.append(block);

Modified: trunk/Source/_javascript_Core/heap/MarkedAllocator.h (124140 => 124141)


--- trunk/Source/_javascript_Core/heap/MarkedAllocator.h	2012-07-31 01:45:44 UTC (rev 124140)
+++ trunk/Source/_javascript_Core/heap/MarkedAllocator.h	2012-07-31 01:48:18 UTC (rev 124141)
@@ -101,7 +101,6 @@
     }
     
     m_currentBlock->zapFreeList(m_freeList);
-    m_currentBlock = 0;
     m_freeList = MarkedBlock::FreeList();
 }
 

Modified: trunk/Source/_javascript_Core/heap/MarkedBlock.cpp (124140 => 124141)


--- trunk/Source/_javascript_Core/heap/MarkedBlock.cpp	2012-07-31 01:45:44 UTC (rev 124140)
+++ trunk/Source/_javascript_Core/heap/MarkedBlock.cpp	2012-07-31 01:48:18 UTC (rev 124141)
@@ -26,7 +26,6 @@
 #include "config.h"
 #include "MarkedBlock.h"
 
-#include "IncrementalSweeper.h"
 #include "JSCell.h"
 #include "JSObject.h"
 #include "ScopeChain.h"
@@ -141,12 +140,10 @@
         ASSERT_NOT_REACHED();
         return FreeList();
     case Marked:
-        ASSERT(!m_onlyContainsStructures || heap()->isSafeToSweepStructures());
         return sweepMode == SweepToFreeList
             ? specializedSweep<Marked, SweepToFreeList, destructorCallNeeded>()
             : specializedSweep<Marked, SweepOnly, destructorCallNeeded>();
     case Zapped:
-        ASSERT(!m_onlyContainsStructures || heap()->isSafeToSweepStructures());
         return sweepMode == SweepToFreeList
             ? specializedSweep<Zapped, SweepToFreeList, destructorCallNeeded>()
             : specializedSweep<Zapped, SweepOnly, destructorCallNeeded>();

Modified: trunk/Source/_javascript_Core/heap/MarkedSpace.cpp (124140 => 124141)


--- trunk/Source/_javascript_Core/heap/MarkedSpace.cpp	2012-07-31 01:45:44 UTC (rev 124140)
+++ trunk/Source/_javascript_Core/heap/MarkedSpace.cpp	2012-07-31 01:48:18 UTC (rev 124141)
@@ -21,7 +21,6 @@
 #include "config.h"
 #include "MarkedSpace.h"
 
-#include "IncrementalSweeper.h"
 #include "JSGlobalObject.h"
 #include "JSLock.h"
 #include "JSObject.h"
@@ -109,12 +108,6 @@
     forEachBlock<LastChanceToFinalize>();
 }
 
-void MarkedSpace::sweep()
-{
-    m_heap->sweeper()->willFinishSweeping();
-    forEachBlock<Sweep>();
-}
-
 void MarkedSpace::resetAllocators()
 {
     for (size_t cellSize = preciseStep; cellSize <= preciseCutoff; cellSize += preciseStep) {

Modified: trunk/Source/_javascript_Core/heap/MarkedSpace.h (124140 => 124141)


--- trunk/Source/_javascript_Core/heap/MarkedSpace.h	2012-07-31 01:45:44 UTC (rev 124140)
+++ trunk/Source/_javascript_Core/heap/MarkedSpace.h	2012-07-31 01:48:18 UTC (rev 124141)
@@ -235,6 +235,11 @@
     forEachBlock<ClearMarks>();
 }
 
+inline void MarkedSpace::sweep()
+{
+    forEachBlock<Sweep>();
+}
+
 inline size_t MarkedSpace::objectCount()
 {
     return forEachBlock<MarkCount>();

Modified: trunk/Source/_javascript_Core/runtime/JSGlobalData.cpp (124140 => 124141)


--- trunk/Source/_javascript_Core/runtime/JSGlobalData.cpp	2012-07-31 01:45:44 UTC (rev 124140)
+++ trunk/Source/_javascript_Core/runtime/JSGlobalData.cpp	2012-07-31 01:48:18 UTC (rev 124141)
@@ -223,7 +223,9 @@
 JSGlobalData::~JSGlobalData()
 {
     ASSERT(!m_apiLock.currentThreadIsHoldingLock());
-    heap.didStartVMShutdown();
+    heap.activityCallback()->didStartVMShutdown();
+    heap.sweeper()->didStartVMShutdown();
+    heap.lastChanceToFinalize();
 
     delete interpreter;
 #ifndef NDEBUG
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to