[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