Store V8 SVGElementInstance wrappers in the regular DOMObjectMap
authoradamk@chromium.org <adamk@chromium.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 11 Apr 2012 01:57:03 +0000 (01:57 +0000)
committeradamk@chromium.org <adamk@chromium.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 11 Apr 2012 01:57:03 +0000 (01:57 +0000)
https://bugs.webkit.org/show_bug.cgi?id=83615

Reviewed by Adam Barth.

Historically, these wrappers had their own map, but there doesn't seem
to be any particular reason for this. The V8GCController doesn't
treat them specially (which is the reason you normally need a separate
wrapper map).

No new tests, no expected change in behavior.

* bindings/scripts/CodeGeneratorV8.pm:
(GetDomMapName):
* bindings/v8/DOMDataStore.cpp:
(WebCore::DOMDataStore::DOMDataStore):
(WebCore::DOMDataStore::getDOMWrapperMap):
* bindings/v8/DOMDataStore.h:
(DOMDataStore):
* bindings/v8/ScopedDOMDataStore.cpp:
(WebCore::ScopedDOMDataStore::ScopedDOMDataStore):
(WebCore::ScopedDOMDataStore::~ScopedDOMDataStore):
* bindings/v8/StaticDOMDataStore.cpp:
(WebCore::StaticDOMDataStore::StaticDOMDataStore):
* bindings/v8/StaticDOMDataStore.h:
(StaticDOMDataStore):
* bindings/v8/V8DOMMap.cpp:
(WebCore::removeAllDOMObjects):
* bindings/v8/V8DOMMap.h:
(WebCore):
* bindings/v8/V8DOMWrapper.cpp:

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@113806 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Source/WebCore/ChangeLog
Source/WebCore/bindings/scripts/CodeGeneratorV8.pm
Source/WebCore/bindings/v8/DOMDataStore.cpp
Source/WebCore/bindings/v8/DOMDataStore.h
Source/WebCore/bindings/v8/ScopedDOMDataStore.cpp
Source/WebCore/bindings/v8/StaticDOMDataStore.cpp
Source/WebCore/bindings/v8/StaticDOMDataStore.h
Source/WebCore/bindings/v8/V8DOMMap.cpp
Source/WebCore/bindings/v8/V8DOMMap.h
Source/WebCore/bindings/v8/V8DOMWrapper.cpp

index 95e39ff..db74101 100644 (file)
@@ -1,3 +1,37 @@
+2012-04-10  Adam Klein  <adamk@chromium.org>
+
+        Store V8 SVGElementInstance wrappers in the regular DOMObjectMap
+        https://bugs.webkit.org/show_bug.cgi?id=83615
+
+        Reviewed by Adam Barth.
+
+        Historically, these wrappers had their own map, but there doesn't seem
+        to be any particular reason for this. The V8GCController doesn't
+        treat them specially (which is the reason you normally need a separate
+        wrapper map).
+
+        No new tests, no expected change in behavior.
+
+        * bindings/scripts/CodeGeneratorV8.pm:
+        (GetDomMapName):
+        * bindings/v8/DOMDataStore.cpp:
+        (WebCore::DOMDataStore::DOMDataStore):
+        (WebCore::DOMDataStore::getDOMWrapperMap):
+        * bindings/v8/DOMDataStore.h:
+        (DOMDataStore):
+        * bindings/v8/ScopedDOMDataStore.cpp:
+        (WebCore::ScopedDOMDataStore::ScopedDOMDataStore):
+        (WebCore::ScopedDOMDataStore::~ScopedDOMDataStore):
+        * bindings/v8/StaticDOMDataStore.cpp:
+        (WebCore::StaticDOMDataStore::StaticDOMDataStore):
+        * bindings/v8/StaticDOMDataStore.h:
+        (StaticDOMDataStore):
+        * bindings/v8/V8DOMMap.cpp:
+        (WebCore::removeAllDOMObjects):
+        * bindings/v8/V8DOMMap.h:
+        (WebCore):
+        * bindings/v8/V8DOMWrapper.cpp:
+
 2012-04-10  Noel Gordon  <noel.gordon@gmail.com>
 
         [Qt] Separate image encoding from dataURL construction
index ddd1081..5fa5dc5 100644 (file)
@@ -3185,7 +3185,6 @@ sub GetDomMapName
     my $dataNode = shift;
     my $type = shift;
 
-    return "DOMSVGElementInstance" if $type eq "SVGElementInstance";
     return "ActiveDOMNode" if (IsNodeSubType($dataNode) && $dataNode->extendedAttributes->{"ActiveDOMObject"});
     return "DOMNode" if IsNodeSubType($dataNode);
     return "ActiveDOMObject" if $dataNode->extendedAttributes->{"ActiveDOMObject"};
index f421f69..2d5b5e6 100644 (file)
@@ -89,9 +89,6 @@ DOMDataStore::DOMDataStore()
     , m_activeDomNodeMap(0)
     , m_domObjectMap(0)
     , m_activeDomObjectMap(0)
-#if ENABLE(SVG)
-    , m_domSvgElementInstanceMap(0)
-#endif
 {
 }
 
@@ -115,10 +112,6 @@ void* DOMDataStore::getDOMWrapperMap(DOMWrapperMapType type)
         return m_domObjectMap;
     case ActiveDOMObjectMap:
         return m_activeDomObjectMap;
-#if ENABLE(SVG)
-    case DOMSVGElementInstanceMap:
-        return m_domSvgElementInstanceMap;
-#endif
     }
 
     ASSERT_NOT_REACHED();
@@ -165,15 +158,4 @@ void DOMDataStore::weakNodeCallback(v8::Persistent<v8::Value> value, void* domOb
     node->deref(); // Nobody overrides Node::deref so it's safe
 }
 
-#if ENABLE(SVG)
-
-void DOMDataStore::weakSVGElementInstanceCallback(v8::Persistent<v8::Value> v8Object, void* domObject)
-{
-    v8::HandleScope scope;
-    ASSERT(v8Object->IsObject());
-    DOMData::handleWeakObject(DOMDataStore::DOMSVGElementInstanceMap, v8::Persistent<v8::Object>::Cast(v8Object), static_cast<SVGElementInstance*>(domObject));
-}
-
-#endif  // ENABLE(SVG)
-
 } // namespace WebCore
index c3d614b..089d86d 100644 (file)
@@ -67,9 +67,6 @@ namespace WebCore {
             ActiveDOMNodeMap,
             DOMObjectMap,
             ActiveDOMObjectMap,
-#if ENABLE(SVG)
-            DOMSVGElementInstanceMap
-#endif
         };
 
         DOMDataStore();
@@ -84,9 +81,6 @@ namespace WebCore {
         DOMNodeMapping& activeDomNodeMap() { return *m_activeDomNodeMap; }
         DOMWrapperMap<void>& domObjectMap() { return *m_domObjectMap; }
         DOMWrapperMap<void>& activeDomObjectMap() { return *m_activeDomObjectMap; }
-#if ENABLE(SVG)
-        DOMWrapperMap<SVGElementInstance>& domSvgElementInstanceMap() { return *m_domSvgElementInstanceMap; }
-#endif
 
         // Need by V8GCController.
         static void weakActiveDOMObjectCallback(v8::Persistent<v8::Value> v8Object, void* domObject);
@@ -94,17 +88,11 @@ namespace WebCore {
 
     protected:
         static void weakDOMObjectCallback(v8::Persistent<v8::Value> v8Object, void* domObject);
-#if ENABLE(SVG)
-        static void weakSVGElementInstanceCallback(v8::Persistent<v8::Value> v8Object, void* domObject);
-#endif
 
         DOMNodeMapping* m_domNodeMap;
         DOMNodeMapping* m_activeDomNodeMap;
         DOMWrapperMap<void>* m_domObjectMap;
         DOMWrapperMap<void>* m_activeDomObjectMap;
-#if ENABLE(SVG)
-        DOMWrapperMap<SVGElementInstance>* m_domSvgElementInstanceMap;
-#endif
     };
 
 } // namespace WebCore
index 666d0f7..38fe429 100644 (file)
@@ -40,9 +40,6 @@ ScopedDOMDataStore::ScopedDOMDataStore()
     m_activeDomNodeMap = new DOMWrapperMap<Node>(&DOMDataStore::weakNodeCallback);
     m_domObjectMap = new DOMWrapperMap<void>(&DOMDataStore::weakDOMObjectCallback);
     m_activeDomObjectMap = new DOMWrapperMap<void>(&DOMDataStore::weakActiveDOMObjectCallback);
-#if ENABLE(SVG)
-    m_domSvgElementInstanceMap = new DOMWrapperMap<SVGElementInstance>(&DOMDataStore::weakSVGElementInstanceCallback);
-#endif
 }
 
 ScopedDOMDataStore::~ScopedDOMDataStore()
@@ -51,9 +48,6 @@ ScopedDOMDataStore::~ScopedDOMDataStore()
     delete m_activeDomNodeMap;
     delete m_domObjectMap;
     delete m_activeDomObjectMap;
-#if ENABLE(SVG)
-    delete m_domSvgElementInstanceMap;
-#endif
 }
 
 } // namespace WebCore
index 8eb630d..996c9c8 100644 (file)
@@ -40,17 +40,11 @@ StaticDOMDataStore::StaticDOMDataStore()
     , m_staticActiveDomNodeMap(&DOMDataStore::weakNodeCallback)
     , m_staticDomObjectMap(&DOMDataStore::weakDOMObjectCallback)
     , m_staticActiveDomObjectMap(&DOMDataStore::weakActiveDOMObjectCallback)
-#if ENABLE(SVG)
-    , m_staticDomSvgElementInstanceMap(&DOMDataStore::weakSVGElementInstanceCallback)
-#endif
 {
     m_domNodeMap = &m_staticDomNodeMap;
     m_activeDomNodeMap = &m_staticActiveDomNodeMap;
     m_domObjectMap = &m_staticDomObjectMap;
     m_activeDomObjectMap = &m_staticActiveDomObjectMap;
-#if ENABLE(SVG)
-    m_domSvgElementInstanceMap = &m_staticDomSvgElementInstanceMap;
-#endif
     V8BindingPerIsolateData::current()->registerDOMDataStore(this);
 }
 
index 6c65d44..2d00b27 100644 (file)
@@ -54,9 +54,6 @@ private:
     IntrusiveDOMWrapperMap m_staticActiveDomNodeMap;
     DOMWrapperMap<void> m_staticDomObjectMap;
     DOMWrapperMap<void> m_staticActiveDomObjectMap;
-#if ENABLE(SVG)
-    DOMWrapperMap<SVGElementInstance> m_staticDomSvgElementInstanceMap;
-#endif
 };
 
 } // namespace WebCore
index 93d5a1b..ce80425 100644 (file)
@@ -79,15 +79,6 @@ DOMWrapperMap<void>& getActiveDOMObjectMap()
     return getDOMDataStore().activeDomObjectMap();
 }
 
-#if ENABLE(SVG)
-
-DOMWrapperMap<SVGElementInstance>& getDOMSVGElementInstanceMap()
-{
-    return getDOMDataStore().domSvgElementInstanceMap();
-}
-
-#endif // ENABLE(SVG)
-
 void removeAllDOMObjects()
 {
     DOMDataStore& store = getDOMDataStore();
@@ -101,11 +92,6 @@ void removeAllDOMObjects()
 
         // Remove all active DOM nodes.
         DOMData::removeObjectsFromWrapperMap<Node>(&store, store.activeDomNodeMap());
-
-#if ENABLE(SVG)
-        // Remove all SVG element instances in the wrapper map.
-        DOMData::removeObjectsFromWrapperMap<SVGElementInstance>(&store, store.domSvgElementInstanceMap());
-#endif
     }
 
     // Remove all DOM objects in the wrapper map.
@@ -163,20 +149,4 @@ void visitActiveDOMObjects(DOMWrapperMap<void>::Visitor* visitor)
     }
 }
 
-#if ENABLE(SVG)
-
-void visitDOMSVGElementInstances(DOMWrapperMap<SVGElementInstance>::Visitor* visitor)
-{
-    v8::HandleScope scope;
-
-    DOMDataList& list = DOMDataStore::allStores();
-    for (size_t i = 0; i < list.size(); ++i) {
-        DOMDataStore* store = list[i];
-
-        store->domSvgElementInstanceMap().visit(store, visitor);
-    }
-}
-
-#endif
-
 } // namespace WebCore
index 1363a79..7ec1105 100644 (file)
@@ -38,9 +38,6 @@
 namespace WebCore {
     class DOMDataStore;
     class Node;
-#if ENABLE(SVG)
-    class SVGElementInstance;
-#endif
 
     template <class KeyType, class ValueType> class AbstractWeakReferenceMap {
     public:
@@ -170,12 +167,6 @@ namespace WebCore {
     // This should be called to remove all DOM objects associated with the current thread when it is tearing down.
     void removeAllDOMObjects();
 
-#if ENABLE(SVG)
-    // A map for SVGElementInstances to its JS wrapper.
-    DOMWrapperMap<SVGElementInstance>& getDOMSVGElementInstanceMap();
-    void visitSVGElementInstances(DOMWrapperMap<SVGElementInstance>::Visitor*);
-#endif
-
     void enableFasterDOMStoreAccess();
 } // namespace WebCore
 
index 0fad5e8..842a0b4 100644 (file)
@@ -36,7 +36,6 @@
 #include "EventTargetHeaders.h"
 #include "EventTargetInterfaces.h"
 #include "FrameLoaderClient.h"
-#include "SVGElementInstance.h"
 #include "SafeAllocation.h"
 #include "StylePropertySet.h"
 #include "V8AbstractEventListener.h"