[SCM] WebKit Debian packaging branch, webkit-1.2, updated. upstream/1.1.90-6072-g9a69373

eric at webkit.org eric at webkit.org
Wed Apr 7 23:24:55 UTC 2010


The following commit has been merged in the webkit-1.2 branch:
commit d0b09f1d690c57055998fa45ab10949426c263d1
Author: eric at webkit.org <eric at webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date:   Fri Nov 6 13:49:06 2009 +0000

    2009-11-06  Anton Muhin  <antonm at chromium.org>
    
            Reviewed by Adam Barth.
    
            Do not unnecessarly synchronzie in weak reference callbacks.
            https://bugs.webkit.org/show_bug.cgi?id=31191
    
            * bindings/v8/DOMData.h:
            (WebCore::DOMData::handleWeakObject):
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@50598 268f45cc-cd09-0410-ab3c-d52691b4dbfc

diff --git a/WebCore/ChangeLog b/WebCore/ChangeLog
index 02de2ee..12aa2ef 100644
--- a/WebCore/ChangeLog
+++ b/WebCore/ChangeLog
@@ -1,3 +1,13 @@
+2009-11-06  Anton Muhin  <antonm at chromium.org>
+
+        Reviewed by Adam Barth.
+
+        Do not unnecessarly synchronzie in weak reference callbacks.
+        https://bugs.webkit.org/show_bug.cgi?id=31191
+
+        * bindings/v8/DOMData.h:
+        (WebCore::DOMData::handleWeakObject):
+
 2009-11-06  Alexander Pavlov  <apavlov at chromium.org>
 
         Reviewed by Pavel Feldman.
diff --git a/WebCore/bindings/v8/DOMData.h b/WebCore/bindings/v8/DOMData.h
index 5effe7c..8552426 100644
--- a/WebCore/bindings/v8/DOMData.h
+++ b/WebCore/bindings/v8/DOMData.h
@@ -84,20 +84,10 @@ namespace WebCore {
         ThreadIdentifier m_owningThread;
     };
 
-    // Called when the dead object is not in GC thread's map. Go through all
-    // thread maps to find the one containing it.  Then clear the JS reference
-    // and push the DOM object into the delayed queue for it to be deref-ed at
-    // later time from the owning thread.
-    //
-    // * This is called when the GC thread is not the owning thread.
-    // * This can be called on any thread that has GC running.
-    // * Only one V8 instance is running at a time due to V8::Locker. So we don't need to worry about concurrency.
-    //
     template<typename T>
     void DOMData::handleWeakObject(DOMDataStore::DOMWrapperMapType mapType, v8::Handle<v8::Object> v8Object, T* domObject)
     {
-
-        WTF::MutexLocker locker(DOMDataStore::allStoresMutex());
+        ASSERT(WTF::isMainThread());
         DOMDataList& list = DOMDataStore::allStores();
         for (size_t i = 0; i < list.size(); ++i) {
             DOMDataStore* store = list[i];
@@ -108,7 +98,8 @@ namespace WebCore {
             if (*wrapper == *v8Object) {
                 // Clear the JS reference.
                 domMap->forgetOnly(domObject);
-                store->domData()->ensureDeref(V8DOMWrapper::domWrapperType(v8Object), domObject);
+                ASSERT(store->domData()->owningThread() == WTF::currentThread());
+                store->domData()->derefObject(V8DOMWrapper::domWrapperType(v8Object), domObject);
             }
         }
     }

-- 
WebKit Debian packaging



More information about the Pkg-webkit-commits mailing list