2009-07-23 Jian Li <jianli@chromium.org>
[WebKit-https.git] / WebCore / bindings / v8 / V8DOMMap.cpp
index c1bb29c..0904259 100644 (file)
@@ -606,22 +606,25 @@ static void removeAllDOMObjectsInCurrentThreadHelper()
     // Deref all objects in the delayed queue.
     DOMData::getCurrent()->derefDelayedObjects();
 
-    // Remove all DOM nodes.
-    DOMData::removeObjectsFromWrapperMap<Node>(getDOMNodeMap());
+    // The DOM objects with the following types only exist on the main thread.
+    if (WTF::isMainThread()) {
+        // Remove all DOM nodes.
+        DOMData::removeObjectsFromWrapperMap<Node>(getDOMNodeMap());
+
+#if ENABLE(SVG)
+        // Remove all SVG element instances in the wrapper map.
+        DOMData::removeObjectsFromWrapperMap<SVGElementInstance>(getDOMSVGElementInstanceMap());
+
+        // Remove all SVG objects with context in the wrapper map.
+        DOMData::removeObjectsFromWrapperMap<void>(getDOMSVGObjectWithContextMap());
+#endif
+    }
 
     // Remove all DOM objects in the wrapper map.
     DOMData::removeObjectsFromWrapperMap<void>(getDOMObjectMap());
 
     // Remove all active DOM objects in the wrapper map.
     DOMData::removeObjectsFromWrapperMap<void>(getActiveDOMObjectMap());
-
-#if ENABLE(SVG)
-    // Remove all SVG element instances in the wrapper map.
-    DOMData::removeObjectsFromWrapperMap<SVGElementInstance>(getDOMSVGElementInstanceMap());
-
-    // Remove all SVG objects with context in the wrapper map.
-    DOMData::removeObjectsFromWrapperMap<void>(getDOMSVGObjectWithContextMap());
-#endif
 }
 
 void removeAllDOMObjectsInCurrentThread()