[SCM] WebKit Debian packaging branch, webkit-1.3, updated. upstream/1.3.7-4207-g178b198

ggaren at apple.com ggaren at apple.com
Sun Feb 20 23:01:20 UTC 2011


The following commit has been merged in the webkit-1.3 branch:
commit 2029c2adc6e88047bec8fb8d9bce4ce36be33da2
Author: ggaren at apple.com <ggaren at apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date:   Sat Jan 15 03:28:16 2011 +0000

    Try to fix the GTK bot.
    
    Reviewed by Sam Weinig.
    
    * runtime/Heap.cpp:
    (JSC::Heap::Heap):
    (JSC::Heap::markRoots): Kids, remember to initialize your data members.
    Knowing is half the battle.
    
    
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@75866 268f45cc-cd09-0410-ab3c-d52691b4dbfc

diff --git a/Source/JavaScriptCore/ChangeLog b/Source/JavaScriptCore/ChangeLog
index decbc61..67460ce 100644
--- a/Source/JavaScriptCore/ChangeLog
+++ b/Source/JavaScriptCore/ChangeLog
@@ -1,3 +1,14 @@
+2011-01-14  Geoffrey Garen  <ggaren at apple.com>
+
+        Reviewed by Sam Weinig.
+        
+        Try to fix the GTK bot.
+
+        * runtime/Heap.cpp:
+        (JSC::Heap::Heap):
+        (JSC::Heap::markRoots): Kids, remember to initialize your data members.
+        Knowing is half the battle.
+
 2011-01-14  Oliver Hunt  <oliver at apple.com>
 
         Reviewed by Stephanie Lewis.
diff --git a/Source/JavaScriptCore/runtime/Heap.cpp b/Source/JavaScriptCore/runtime/Heap.cpp
index 20e7519..de6928c 100644
--- a/Source/JavaScriptCore/runtime/Heap.cpp
+++ b/Source/JavaScriptCore/runtime/Heap.cpp
@@ -37,6 +37,7 @@ namespace JSC {
 
 Heap::Heap(JSGlobalData* globalData)
     : m_markedSpace(globalData)
+    , m_operationInProgress(NoOperation)
     , m_markListSet(0)
     , m_activityCallback(DefaultGCActivityCallback::create(this))
     , m_globalData(globalData)
@@ -259,34 +260,49 @@ void Heap::markRoots()
 
     m_operationInProgress = Collection;
 
-    MarkStack& markStack = m_globalData->markStack;
+    // Gather conservative references. We must do this before resetting mark bits
+    // because we rely on mark bits to tell us whether a candidate reference
+    // is valid.
+    HashSet<JSCell*> machineStackReferences;
+    m_machineStackMarker.markMachineStackConservatively(machineStackReferences);
 
-    // Reset mark bits.
     m_markedSpace.clearMarkBits();
 
-    // Mark stack roots.
-    m_machineStackMarker.markMachineStackConservatively(markStack);
+    MarkStack& markStack = m_globalData->markStack;
+
+    HashSet<JSCell*>::iterator end = machineStackReferences.end();
+    for (HashSet<JSCell*>::iterator it = machineStackReferences.begin(); it != end; ++it)
+        markStack.append(*it);
+    markStack.drain();
+
+    // FIXME: Do we need extra conservatism here too?
     m_globalData->interpreter->registerFile().markCallFrames(markStack, this);
+    markStack.drain();
 
     // Mark explicitly registered roots.
     markProtectedObjects(markStack);
-    
+    markStack.drain();
+
     // Mark temporary vector for Array sorting
     markTempSortVectors(markStack);
+    markStack.drain();
 
     // Mark misc. other roots.
     if (m_markListSet && m_markListSet->size())
         MarkedArgumentBuffer::markLists(markStack, *m_markListSet);
+    markStack.drain();
+
     if (m_globalData->exception)
         markStack.append(m_globalData->exception);
     if (m_globalData->firstStringifierToMark)
         JSONObject::markStringifiers(markStack, m_globalData->firstStringifierToMark);
+    markStack.drain();
 
     // Mark the small strings cache last, since it will clear itself if nothing
     // else has marked it.
     m_globalData->smallStrings.markChildren(markStack);
-
     markStack.drain();
+
     markStack.compact();
 
     updateWeakGCHandles();

-- 
WebKit Debian packaging



More information about the Pkg-webkit-commits mailing list