Title: [132540] trunk/Source/WebCore
Revision
132540
Author
[email protected]
Date
2012-10-25 15:34:14 -0700 (Thu, 25 Oct 2012)

Log Message

[V8] ActiveDOMNodes no longer require a separate wrapper map
https://bugs.webkit.org/show_bug.cgi?id=100352

Reviewed by Eric Seidel.

There is no longer any reason to keep a separate DOM wrapper map for
active DOM nodes. We can simply store them in the normal DOM node
wrapper map (which is more efficient because it doesn't use a HashMap).

* 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/IntrusiveDOMWrapperMap.h:
* bindings/v8/V8DOMMap.cpp:
* bindings/v8/V8DOMMap.h:
(WebCore):
* bindings/v8/V8DOMWrapper.cpp:
* bindings/v8/V8DOMWrapper.h:
(V8DOMWrapper):
(WebCore::V8DOMWrapper::getCachedWrapper):

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (132539 => 132540)


--- trunk/Source/WebCore/ChangeLog	2012-10-25 22:20:17 UTC (rev 132539)
+++ trunk/Source/WebCore/ChangeLog	2012-10-25 22:34:14 UTC (rev 132540)
@@ -1,3 +1,31 @@
+2012-10-25  Adam Barth  <[email protected]>
+
+        [V8] ActiveDOMNodes no longer require a separate wrapper map
+        https://bugs.webkit.org/show_bug.cgi?id=100352
+
+        Reviewed by Eric Seidel.
+
+        There is no longer any reason to keep a separate DOM wrapper map for
+        active DOM nodes. We can simply store them in the normal DOM node
+        wrapper map (which is more efficient because it doesn't use a HashMap).
+
+        * 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/IntrusiveDOMWrapperMap.h:
+        * bindings/v8/V8DOMMap.cpp:
+        * bindings/v8/V8DOMMap.h:
+        (WebCore):
+        * bindings/v8/V8DOMWrapper.cpp:
+        * bindings/v8/V8DOMWrapper.h:
+        (V8DOMWrapper):
+        (WebCore::V8DOMWrapper::getCachedWrapper):
+
 2012-10-25  Tony Chang  <[email protected]>
 
         Unreviewed, fix the build on Mac.

Modified: trunk/Source/WebCore/bindings/scripts/CodeGeneratorV8.pm (132539 => 132540)


--- trunk/Source/WebCore/bindings/scripts/CodeGeneratorV8.pm	2012-10-25 22:20:17 UTC (rev 132539)
+++ trunk/Source/WebCore/bindings/scripts/CodeGeneratorV8.pm	2012-10-25 22:34:14 UTC (rev 132540)
@@ -3480,7 +3480,6 @@
     my $dataNode = shift;
     my $type = shift;
 
-    return "ActiveDOMNode" if (IsNodeSubType($dataNode) && $dataNode->extendedAttributes->{"ActiveDOMObject"});
     return "DOMNode" if IsNodeSubType($dataNode);
     return "ActiveDOMObject" if $dataNode->extendedAttributes->{"ActiveDOMObject"};
     return "DOMObject";

Modified: trunk/Source/WebCore/bindings/v8/DOMDataStore.cpp (132539 => 132540)


--- trunk/Source/WebCore/bindings/v8/DOMDataStore.cpp	2012-10-25 22:20:17 UTC (rev 132539)
+++ trunk/Source/WebCore/bindings/v8/DOMDataStore.cpp	2012-10-25 22:34:14 UTC (rev 132540)
@@ -42,16 +42,14 @@
 DOMDataStore::DOMDataStore(Type type)
     : m_type(type)
 {
-    if (type == MainWorld) {
+    if (type == MainWorld)
         m_domNodeMap = adoptPtr(new DOMNodeWrapperMap);
-        m_activeDomNodeMap = adoptPtr(new ActiveDOMNodeWrapperMap);
-    } else {
+    else {
         ASSERT(type == IsolatedWorld || type == Worker);
-        // FIXME: In principle, we shouldn't need to create these
-        // wrapper maps for workers because there are no Nodes on
+        // FIXME: In principle, we shouldn't need to create this
+        // wrapper map for workers because there are no Nodes on
         // worker threads.
         m_domNodeMap = adoptPtr(new DOMWrapperHashMap<Node>);
-        m_activeDomNodeMap = adoptPtr(new DOMWrapperHashMap<Node>);
     }
     m_domObjectMap = adoptPtr(new DOMWrapperHashMap<void>);
     m_activeDomObjectMap = adoptPtr(new DOMWrapperHashMap<void>);
@@ -65,10 +63,8 @@
 
     V8PerIsolateData::current()->unregisterDOMDataStore(this);
 
-    if (m_type == IsolatedWorld) {
+    if (m_type == IsolatedWorld)
         m_domNodeMap->clear();
-        m_activeDomNodeMap->clear();
-    }
     m_domObjectMap->clear();
     m_activeDomObjectMap->clear();
 }
@@ -89,7 +85,6 @@
 {
     MemoryClassInfo info(memoryObjectInfo, this, WebCoreMemoryTypes::Binding);
     info.addMember(m_domNodeMap);
-    info.addMember(m_activeDomNodeMap);
     info.addMember(m_domObjectMap);
     info.addMember(m_activeDomObjectMap);
 }

Modified: trunk/Source/WebCore/bindings/v8/DOMDataStore.h (132539 => 132540)


--- trunk/Source/WebCore/bindings/v8/DOMDataStore.h	2012-10-25 22:20:17 UTC (rev 132539)
+++ trunk/Source/WebCore/bindings/v8/DOMDataStore.h	2012-10-25 22:34:14 UTC (rev 132540)
@@ -60,7 +60,6 @@
     static DOMDataStore* current(v8::Isolate*);
 
     DOMWrapperMap<Node>& domNodeMap() { return *m_domNodeMap; }
-    DOMWrapperMap<Node>& activeDomNodeMap() { return *m_activeDomNodeMap; }
     DOMWrapperMap<void>& domObjectMap() { return *m_domObjectMap; }
     DOMWrapperMap<void>& activeDomObjectMap() { return *m_activeDomObjectMap; }
 
@@ -69,7 +68,6 @@
 protected:
     Type m_type;
     OwnPtr<DOMWrapperMap<Node> > m_domNodeMap;
-    OwnPtr<DOMWrapperMap<Node> > m_activeDomNodeMap;
     OwnPtr<DOMWrapperMap<void> > m_domObjectMap;
     OwnPtr<DOMWrapperMap<void> > m_activeDomObjectMap;
 };

Modified: trunk/Source/WebCore/bindings/v8/IntrusiveDOMWrapperMap.h (132539 => 132540)


--- trunk/Source/WebCore/bindings/v8/IntrusiveDOMWrapperMap.h	2012-10-25 22:20:17 UTC (rev 132539)
+++ trunk/Source/WebCore/bindings/v8/IntrusiveDOMWrapperMap.h	2012-10-25 22:34:14 UTC (rev 132540)
@@ -78,36 +78,6 @@
     }
 };
 
-class ActiveDOMNodeWrapperMap : public DOMWrapperHashMap<Node> {
-public:
-    virtual v8::Persistent<v8::Object> get(Node* node) OVERRIDE
-    {
-        v8::Persistent<v8::Object> wrapper = node->wrapper();
-        ASSERT(DOMWrapperHashMap<Node>::get(node) == wrapper);
-        return wrapper;
-    }
-
-    virtual void set(Node* node, v8::Persistent<v8::Object> wrapper) OVERRIDE
-    {
-        ASSERT(node && node->wrapper().IsEmpty());
-        ASSERT(wrapper.WrapperClassId() == v8DOMSubtreeClassId);
-        node->setWrapper(wrapper);
-        DOMWrapperHashMap<Node>::set(node, wrapper);
-    }
-
-    virtual void clear() OVERRIDE
-    {
-        ASSERT_NOT_REACHED();
-    }
-
-    virtual void remove(Node* node, v8::Persistent<v8::Object> wrapper) OVERRIDE
-    {
-        ASSERT(node->wrapper() == wrapper);
-        node->clearWrapper();
-        DOMWrapperHashMap<Node>::remove(node, wrapper);
-    }
-};
-
 } // namespace WebCore
 
 #endif

Modified: trunk/Source/WebCore/bindings/v8/V8DOMMap.cpp (132539 => 132540)


--- trunk/Source/WebCore/bindings/v8/V8DOMMap.cpp	2012-10-25 22:20:17 UTC (rev 132539)
+++ trunk/Source/WebCore/bindings/v8/V8DOMMap.cpp	2012-10-25 22:34:14 UTC (rev 132540)
@@ -49,13 +49,6 @@
     return DOMDataStore::current(isolate)->domNodeMap();
 }
 
-DOMWrapperMap<Node>& getActiveDOMNodeMap(v8::Isolate* isolate)
-{
-    if (!isolate)
-        isolate = v8::Isolate::GetCurrent();
-    return DOMDataStore::current(isolate)->activeDomNodeMap();
-}
-
 DOMWrapperMap<void>& getDOMObjectMap(v8::Isolate* isolate)
 {
     if (!isolate)

Modified: trunk/Source/WebCore/bindings/v8/V8DOMMap.h (132539 => 132540)


--- trunk/Source/WebCore/bindings/v8/V8DOMMap.h	2012-10-25 22:20:17 UTC (rev 132539)
+++ trunk/Source/WebCore/bindings/v8/V8DOMMap.h	2012-10-25 22:34:14 UTC (rev 132540)
@@ -43,7 +43,6 @@
 namespace WebCore {
 
     DOMWrapperMap<Node>& getDOMNodeMap(v8::Isolate* = 0);
-    DOMWrapperMap<Node>& getActiveDOMNodeMap(v8::Isolate* = 0);
 
     class NodeWrapperVisitor {
     public:

Modified: trunk/Source/WebCore/bindings/v8/V8DOMWrapper.cpp (132539 => 132540)


--- trunk/Source/WebCore/bindings/v8/V8DOMWrapper.cpp	2012-10-25 22:20:17 UTC (rev 132539)
+++ trunk/Source/WebCore/bindings/v8/V8DOMWrapper.cpp	2012-10-25 22:34:14 UTC (rev 132540)
@@ -78,16 +78,6 @@
     return wrapperHandle;
 }
 
-v8::Persistent<v8::Object> V8DOMWrapper::setJSWrapperForActiveDOMNode(PassRefPtr<Node> node, v8::Handle<v8::Object> wrapper, v8::Isolate* isolate)
-{
-    v8::Persistent<v8::Object> wrapperHandle = v8::Persistent<v8::Object>::New(wrapper);
-    ASSERT(maybeDOMWrapper(wrapperHandle));
-    ASSERT(node->isActiveNode());
-    wrapperHandle.SetWrapperClassId(v8DOMSubtreeClassId);
-    getActiveDOMNodeMap(isolate).set(node.leakRef(), wrapperHandle);
-    return wrapperHandle;
-}
-
 void V8DOMWrapper::setNamedHiddenReference(v8::Handle<v8::Object> parent, const char* name, v8::Handle<v8::Value> child)
 {
     ASSERT(name);

Modified: trunk/Source/WebCore/bindings/v8/V8DOMWrapper.h (132539 => 132540)


--- trunk/Source/WebCore/bindings/v8/V8DOMWrapper.h	2012-10-25 22:20:17 UTC (rev 132539)
+++ trunk/Source/WebCore/bindings/v8/V8DOMWrapper.h	2012-10-25 22:34:14 UTC (rev 132540)
@@ -99,7 +99,6 @@
         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 v8::Persistent<v8::Object> setJSWrapperForActiveDOMNode(PassRefPtr<Node>, v8::Handle<v8::Object>, v8::Isolate* = 0);
 
         static bool isValidDOMObject(v8::Handle<v8::Value>);
 
@@ -124,7 +123,7 @@
                 return node->wrapper();
 
             DOMDataStore* store = context->world()->domDataStore();
-            DOMWrapperMap<Node>& domNodeMap = node->isActiveNode() ? store->activeDomNodeMap() : store->domNodeMap();
+            DOMWrapperMap<Node>& domNodeMap = store->domNodeMap();
             return domNodeMap.get(node);
         }
     };
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to