Title: [132570] trunk/Source/WebCore
Revision
132570
Author
[email protected]
Date
2012-10-25 21:58:41 -0700 (Thu, 25 Oct 2012)

Log Message

[V8] We can merge the wrapper maps for DOM objects and active DOM objects
https://bugs.webkit.org/show_bug.cgi?id=100432

Reviewed by Eric Seidel.

Now that we use the same object to visit both DOM objects and active
DOM objects, there's no reason to keep them in separate hash maps.

* bindings/scripts/CodeGeneratorV8.pm:
(GetDomMapName):
* bindings/v8/DOMDataStore.cpp:
(WebCore::DOMDataStore::DOMDataStore):
(WebCore::DOMDataStore::~DOMDataStore):
(WebCore::DOMDataStore::reportMemoryUsage):
* bindings/v8/DOMDataStore.h:
(DOMDataStore):
* bindings/v8/V8DOMMap.cpp:
* bindings/v8/V8DOMMap.h:
(NodeWrapperVisitor):
(WebCore):
* bindings/v8/V8DOMWrapper.h:
(V8DOMWrapper):
* bindings/v8/V8GCController.cpp:
(WebCore::V8GCController::majorGCPrologue):
* bindings/v8/custom/V8WebSocketCustom.cpp:
(WebCore::V8WebSocket::constructorCallback):
* bindings/v8/custom/V8XMLHttpRequestConstructor.cpp:
(WebCore::V8XMLHttpRequest::constructorCallback):

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (132569 => 132570)


--- trunk/Source/WebCore/ChangeLog	2012-10-26 04:44:56 UTC (rev 132569)
+++ trunk/Source/WebCore/ChangeLog	2012-10-26 04:58:41 UTC (rev 132570)
@@ -1,3 +1,34 @@
+2012-10-25  Adam Barth  <[email protected]>
+
+        [V8] We can merge the wrapper maps for DOM objects and active DOM objects
+        https://bugs.webkit.org/show_bug.cgi?id=100432
+
+        Reviewed by Eric Seidel.
+
+        Now that we use the same object to visit both DOM objects and active
+        DOM objects, there's no reason to keep them in separate hash maps.
+
+        * bindings/scripts/CodeGeneratorV8.pm:
+        (GetDomMapName):
+        * bindings/v8/DOMDataStore.cpp:
+        (WebCore::DOMDataStore::DOMDataStore):
+        (WebCore::DOMDataStore::~DOMDataStore):
+        (WebCore::DOMDataStore::reportMemoryUsage):
+        * bindings/v8/DOMDataStore.h:
+        (DOMDataStore):
+        * bindings/v8/V8DOMMap.cpp:
+        * bindings/v8/V8DOMMap.h:
+        (NodeWrapperVisitor):
+        (WebCore):
+        * bindings/v8/V8DOMWrapper.h:
+        (V8DOMWrapper):
+        * bindings/v8/V8GCController.cpp:
+        (WebCore::V8GCController::majorGCPrologue):
+        * bindings/v8/custom/V8WebSocketCustom.cpp:
+        (WebCore::V8WebSocket::constructorCallback):
+        * bindings/v8/custom/V8XMLHttpRequestConstructor.cpp:
+        (WebCore::V8XMLHttpRequest::constructorCallback):
+
 2012-10-25  Charles Wei  <[email protected]>
 
         [BlackBerry] User Challenged again after browser restart for HTTP/FTP sites already successfully authenticated.

Modified: trunk/Source/WebCore/bindings/scripts/CodeGeneratorV8.pm (132569 => 132570)


--- trunk/Source/WebCore/bindings/scripts/CodeGeneratorV8.pm	2012-10-26 04:44:56 UTC (rev 132569)
+++ trunk/Source/WebCore/bindings/scripts/CodeGeneratorV8.pm	2012-10-26 04:58:41 UTC (rev 132570)
@@ -3481,7 +3481,6 @@
     my $type = shift;
 
     return "DOMNode" if IsNodeSubType($dataNode);
-    return "ActiveDOMObject" if $dataNode->extendedAttributes->{"ActiveDOMObject"};
     return "DOMObject";
 }
 

Modified: trunk/Source/WebCore/bindings/v8/DOMDataStore.cpp (132569 => 132570)


--- trunk/Source/WebCore/bindings/v8/DOMDataStore.cpp	2012-10-26 04:44:56 UTC (rev 132569)
+++ trunk/Source/WebCore/bindings/v8/DOMDataStore.cpp	2012-10-26 04:58:41 UTC (rev 132570)
@@ -52,7 +52,6 @@
         m_domNodeMap = adoptPtr(new DOMWrapperHashMap<Node>);
     }
     m_domObjectMap = adoptPtr(new DOMWrapperHashMap<void>);
-    m_activeDomObjectMap = adoptPtr(new DOMWrapperHashMap<void>);
 
     V8PerIsolateData::current()->registerDOMDataStore(this);
 }
@@ -66,7 +65,6 @@
     if (m_type == IsolatedWorld)
         m_domNodeMap->clear();
     m_domObjectMap->clear();
-    m_activeDomObjectMap->clear();
 }
 
 DOMDataStore* DOMDataStore::current(v8::Isolate* isolate)
@@ -86,7 +84,6 @@
     MemoryClassInfo info(memoryObjectInfo, this, WebCoreMemoryTypes::Binding);
     info.addMember(m_domNodeMap);
     info.addMember(m_domObjectMap);
-    info.addMember(m_activeDomObjectMap);
 }
 
 } // namespace WebCore

Modified: trunk/Source/WebCore/bindings/v8/DOMDataStore.h (132569 => 132570)


--- trunk/Source/WebCore/bindings/v8/DOMDataStore.h	2012-10-26 04:44:56 UTC (rev 132569)
+++ trunk/Source/WebCore/bindings/v8/DOMDataStore.h	2012-10-26 04:58:41 UTC (rev 132570)
@@ -61,7 +61,6 @@
 
     DOMWrapperMap<Node>& domNodeMap() { return *m_domNodeMap; }
     DOMWrapperMap<void>& domObjectMap() { return *m_domObjectMap; }
-    DOMWrapperMap<void>& activeDomObjectMap() { return *m_activeDomObjectMap; }
 
     void reportMemoryUsage(MemoryObjectInfo*) const;
 
@@ -69,7 +68,6 @@
     Type m_type;
     OwnPtr<DOMWrapperMap<Node> > m_domNodeMap;
     OwnPtr<DOMWrapperMap<void> > m_domObjectMap;
-    OwnPtr<DOMWrapperMap<void> > m_activeDomObjectMap;
 };
 
 } // namespace WebCore

Modified: trunk/Source/WebCore/bindings/v8/V8DOMMap.cpp (132569 => 132570)


--- trunk/Source/WebCore/bindings/v8/V8DOMMap.cpp	2012-10-26 04:44:56 UTC (rev 132569)
+++ trunk/Source/WebCore/bindings/v8/V8DOMMap.cpp	2012-10-26 04:58:41 UTC (rev 132570)
@@ -56,13 +56,6 @@
     return DOMDataStore::current(isolate)->domObjectMap();
 }
 
-DOMWrapperMap<void>& getActiveDOMObjectMap(v8::Isolate* isolate)
-{
-    if (!isolate)
-        isolate = v8::Isolate::GetCurrent();
-    return DOMDataStore::current(isolate)->activeDomObjectMap();
-}
-
 void visitAllDOMNodes(NodeWrapperVisitor* visitor)
 {
     v8::HandleScope scope;
@@ -104,16 +97,4 @@
     }
 }
 
-void visitActiveDOMObjects(DOMWrapperVisitor<void>* visitor)
-{
-    v8::HandleScope scope;
-
-    Vector<DOMDataStore*>& list = V8PerIsolateData::current()->allStores();
-    for (size_t i = 0; i < list.size(); ++i) {
-        DOMDataStore* store = list[i];
-
-        store->activeDomObjectMap().visit(store, visitor);
-    }
-}
-
 } // namespace WebCore

Modified: trunk/Source/WebCore/bindings/v8/V8DOMMap.h (132569 => 132570)


--- trunk/Source/WebCore/bindings/v8/V8DOMMap.h	2012-10-26 04:44:56 UTC (rev 132569)
+++ trunk/Source/WebCore/bindings/v8/V8DOMMap.h	2012-10-26 04:58:41 UTC (rev 132570)
@@ -42,23 +42,18 @@
 
 namespace WebCore {
 
-    DOMWrapperMap<Node>& getDOMNodeMap(v8::Isolate* = 0);
+class NodeWrapperVisitor {
+public:
+    virtual ~NodeWrapperVisitor();
+    virtual void visitNodeWrapper(Node*, v8::Persistent<v8::Object> wrapper) = 0;
+};
 
-    class NodeWrapperVisitor {
-    public:
-        virtual ~NodeWrapperVisitor();
-        virtual void visitNodeWrapper(Node*, v8::Persistent<v8::Object> wrapper) = 0;
-    };
-    void visitAllDOMNodes(NodeWrapperVisitor*);
+DOMWrapperMap<Node>& getDOMNodeMap(v8::Isolate* = 0);
+void visitAllDOMNodes(NodeWrapperVisitor*);
 
-    // A map from a DOM object (non-node) to its JS wrapper. This map does not contain the DOM objects which can have pending activity (active dom objects).
-    DOMWrapperMap<void>& getDOMObjectMap(v8::Isolate* = 0);
-    void visitDOMObjects(DOMWrapperVisitor<void>*);
+DOMWrapperMap<void>& getDOMObjectMap(v8::Isolate* = 0);
+void visitDOMObjects(DOMWrapperVisitor<void>*);
 
-    // A map from a DOM object to its JS wrapper for DOM objects which can have pending activity.
-    DOMWrapperMap<void>& getActiveDOMObjectMap(v8::Isolate* = 0);
-    void visitActiveDOMObjects(DOMWrapperVisitor<void>*);
-
 } // namespace WebCore
 
 #endif // V8DOMMap_h

Modified: trunk/Source/WebCore/bindings/v8/V8DOMWrapper.h (132569 => 132570)


--- trunk/Source/WebCore/bindings/v8/V8DOMWrapper.h	2012-10-26 04:44:56 UTC (rev 132569)
+++ trunk/Source/WebCore/bindings/v8/V8DOMWrapper.h	2012-10-26 04:58:41 UTC (rev 132570)
@@ -96,8 +96,6 @@
 
         template<typename T>
         static v8::Persistent<v8::Object> setJSWrapperForDOMObject(PassRefPtr<T>, v8::Handle<v8::Object>, v8::Isolate* = 0);
-        template<typename T>
-        static v8::Persistent<v8::Object> setJSWrapperForActiveDOMObject(PassRefPtr<T>, v8::Handle<v8::Object>, v8::Isolate* = 0);
         static v8::Persistent<v8::Object> setJSWrapperForDOMNode(PassRefPtr<Node>, v8::Handle<v8::Object>, v8::Isolate* = 0);
 
         static bool isValidDOMObject(v8::Handle<v8::Value>);
@@ -138,15 +136,6 @@
         return wrapperHandle;
     }
 
-    template<typename T>
-    v8::Persistent<v8::Object> V8DOMWrapper::setJSWrapperForActiveDOMObject(PassRefPtr<T> object, v8::Handle<v8::Object> wrapper, v8::Isolate* isolate)
-    {
-        v8::Persistent<v8::Object> wrapperHandle = v8::Persistent<v8::Object>::New(wrapper);
-        ASSERT(maybeDOMWrapper(wrapperHandle));
-        ASSERT(domWrapperType(wrapperHandle)->toActiveDOMObjectFunction);
-        getActiveDOMObjectMap(isolate).set(object.leakRef(), wrapperHandle);
-        return wrapperHandle;
-    }
 }
 
 #endif // V8DOMWrapper_h

Modified: trunk/Source/WebCore/bindings/v8/V8GCController.cpp (132569 => 132570)


--- trunk/Source/WebCore/bindings/v8/V8GCController.cpp	2012-10-26 04:44:56 UTC (rev 132569)
+++ trunk/Source/WebCore/bindings/v8/V8GCController.cpp	2012-10-26 04:58:41 UTC (rev 132570)
@@ -233,7 +233,6 @@
 
     ObjectVisitor objectVisitor(&liveObjects);
     visitDOMObjects(&objectVisitor);
-    visitActiveDOMObjects(&objectVisitor);
 
     v8::V8::AddObjectGroup(liveObjects.data(), liveObjects.size());
 

Modified: trunk/Source/WebCore/bindings/v8/custom/V8WebSocketCustom.cpp (132569 => 132570)


--- trunk/Source/WebCore/bindings/v8/custom/V8WebSocketCustom.cpp	2012-10-26 04:44:56 UTC (rev 132569)
+++ trunk/Source/WebCore/bindings/v8/custom/V8WebSocketCustom.cpp	2012-10-26 04:58:41 UTC (rev 132570)
@@ -105,7 +105,7 @@
 
     v8::Handle<v8::Object> wrapper = args.Holder();
     V8DOMWrapper::setDOMWrapper(wrapper, &info, webSocket.get());
-    V8DOMWrapper::setJSWrapperForActiveDOMObject(webSocket.release(), wrapper);
+    V8DOMWrapper::setJSWrapperForDOMObject(webSocket.release(), wrapper);
     return wrapper;
 }
 

Modified: trunk/Source/WebCore/bindings/v8/custom/V8XMLHttpRequestConstructor.cpp (132569 => 132570)


--- trunk/Source/WebCore/bindings/v8/custom/V8XMLHttpRequestConstructor.cpp	2012-10-26 04:44:56 UTC (rev 132569)
+++ trunk/Source/WebCore/bindings/v8/custom/V8XMLHttpRequestConstructor.cpp	2012-10-26 04:58:41 UTC (rev 132570)
@@ -62,7 +62,7 @@
 
     v8::Handle<v8::Object> wrapper = args.Holder();
     V8DOMWrapper::setDOMWrapper(wrapper, &info, xmlHttpRequest.get());
-    V8DOMWrapper::setJSWrapperForActiveDOMObject(xmlHttpRequest.release(), wrapper);
+    V8DOMWrapper::setJSWrapperForDOMObject(xmlHttpRequest.release(), wrapper);
     return wrapper;
 }
 
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to