From b3cd35cc1e871590799cab8aacbf3e87737f3f69 Mon Sep 17 00:00:00 2001 From: "adamk@chromium.org" Date: Wed, 11 Apr 2012 01:57:03 +0000 Subject: [PATCH] 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: git-svn-id: http://svn.webkit.org/repository/webkit/trunk@113806 268f45cc-cd09-0410-ab3c-d52691b4dbfc --- Source/WebCore/ChangeLog | 34 ++++++++++++++++++++++ Source/WebCore/bindings/scripts/CodeGeneratorV8.pm | 1 - Source/WebCore/bindings/v8/DOMDataStore.cpp | 18 ------------ Source/WebCore/bindings/v8/DOMDataStore.h | 12 -------- Source/WebCore/bindings/v8/ScopedDOMDataStore.cpp | 6 ---- Source/WebCore/bindings/v8/StaticDOMDataStore.cpp | 6 ---- Source/WebCore/bindings/v8/StaticDOMDataStore.h | 3 -- Source/WebCore/bindings/v8/V8DOMMap.cpp | 30 ------------------- Source/WebCore/bindings/v8/V8DOMMap.h | 9 ------ Source/WebCore/bindings/v8/V8DOMWrapper.cpp | 1 - 10 files changed, 34 insertions(+), 86 deletions(-) diff --git a/Source/WebCore/ChangeLog b/Source/WebCore/ChangeLog index 95e39ff..db74101 100644 --- a/Source/WebCore/ChangeLog +++ b/Source/WebCore/ChangeLog @@ -1,3 +1,37 @@ +2012-04-10 Adam Klein + + 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 [Qt] Separate image encoding from dataURL construction diff --git a/Source/WebCore/bindings/scripts/CodeGeneratorV8.pm b/Source/WebCore/bindings/scripts/CodeGeneratorV8.pm index ddd1081..5fa5dc5 100644 --- a/Source/WebCore/bindings/scripts/CodeGeneratorV8.pm +++ b/Source/WebCore/bindings/scripts/CodeGeneratorV8.pm @@ -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"}; diff --git a/Source/WebCore/bindings/v8/DOMDataStore.cpp b/Source/WebCore/bindings/v8/DOMDataStore.cpp index f421f69..2d5b5e6 100644 --- a/Source/WebCore/bindings/v8/DOMDataStore.cpp +++ b/Source/WebCore/bindings/v8/DOMDataStore.cpp @@ -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 value, void* domOb node->deref(); // Nobody overrides Node::deref so it's safe } -#if ENABLE(SVG) - -void DOMDataStore::weakSVGElementInstanceCallback(v8::Persistent v8Object, void* domObject) -{ - v8::HandleScope scope; - ASSERT(v8Object->IsObject()); - DOMData::handleWeakObject(DOMDataStore::DOMSVGElementInstanceMap, v8::Persistent::Cast(v8Object), static_cast(domObject)); -} - -#endif // ENABLE(SVG) - } // namespace WebCore diff --git a/Source/WebCore/bindings/v8/DOMDataStore.h b/Source/WebCore/bindings/v8/DOMDataStore.h index c3d614b..089d86d 100644 --- a/Source/WebCore/bindings/v8/DOMDataStore.h +++ b/Source/WebCore/bindings/v8/DOMDataStore.h @@ -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& domObjectMap() { return *m_domObjectMap; } DOMWrapperMap& activeDomObjectMap() { return *m_activeDomObjectMap; } -#if ENABLE(SVG) - DOMWrapperMap& domSvgElementInstanceMap() { return *m_domSvgElementInstanceMap; } -#endif // Need by V8GCController. static void weakActiveDOMObjectCallback(v8::Persistent v8Object, void* domObject); @@ -94,17 +88,11 @@ namespace WebCore { protected: static void weakDOMObjectCallback(v8::Persistent v8Object, void* domObject); -#if ENABLE(SVG) - static void weakSVGElementInstanceCallback(v8::Persistent v8Object, void* domObject); -#endif DOMNodeMapping* m_domNodeMap; DOMNodeMapping* m_activeDomNodeMap; DOMWrapperMap* m_domObjectMap; DOMWrapperMap* m_activeDomObjectMap; -#if ENABLE(SVG) - DOMWrapperMap* m_domSvgElementInstanceMap; -#endif }; } // namespace WebCore diff --git a/Source/WebCore/bindings/v8/ScopedDOMDataStore.cpp b/Source/WebCore/bindings/v8/ScopedDOMDataStore.cpp index 666d0f7..38fe429 100644 --- a/Source/WebCore/bindings/v8/ScopedDOMDataStore.cpp +++ b/Source/WebCore/bindings/v8/ScopedDOMDataStore.cpp @@ -40,9 +40,6 @@ ScopedDOMDataStore::ScopedDOMDataStore() m_activeDomNodeMap = new DOMWrapperMap(&DOMDataStore::weakNodeCallback); m_domObjectMap = new DOMWrapperMap(&DOMDataStore::weakDOMObjectCallback); m_activeDomObjectMap = new DOMWrapperMap(&DOMDataStore::weakActiveDOMObjectCallback); -#if ENABLE(SVG) - m_domSvgElementInstanceMap = new DOMWrapperMap(&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 diff --git a/Source/WebCore/bindings/v8/StaticDOMDataStore.cpp b/Source/WebCore/bindings/v8/StaticDOMDataStore.cpp index 8eb630d..996c9c8 100644 --- a/Source/WebCore/bindings/v8/StaticDOMDataStore.cpp +++ b/Source/WebCore/bindings/v8/StaticDOMDataStore.cpp @@ -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); } diff --git a/Source/WebCore/bindings/v8/StaticDOMDataStore.h b/Source/WebCore/bindings/v8/StaticDOMDataStore.h index 6c65d44..2d00b27 100644 --- a/Source/WebCore/bindings/v8/StaticDOMDataStore.h +++ b/Source/WebCore/bindings/v8/StaticDOMDataStore.h @@ -54,9 +54,6 @@ private: IntrusiveDOMWrapperMap m_staticActiveDomNodeMap; DOMWrapperMap m_staticDomObjectMap; DOMWrapperMap m_staticActiveDomObjectMap; -#if ENABLE(SVG) - DOMWrapperMap m_staticDomSvgElementInstanceMap; -#endif }; } // namespace WebCore diff --git a/Source/WebCore/bindings/v8/V8DOMMap.cpp b/Source/WebCore/bindings/v8/V8DOMMap.cpp index 93d5a1b..ce80425 100644 --- a/Source/WebCore/bindings/v8/V8DOMMap.cpp +++ b/Source/WebCore/bindings/v8/V8DOMMap.cpp @@ -79,15 +79,6 @@ DOMWrapperMap& getActiveDOMObjectMap() return getDOMDataStore().activeDomObjectMap(); } -#if ENABLE(SVG) - -DOMWrapperMap& 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(&store, store.activeDomNodeMap()); - -#if ENABLE(SVG) - // Remove all SVG element instances in the wrapper map. - DOMData::removeObjectsFromWrapperMap(&store, store.domSvgElementInstanceMap()); -#endif } // Remove all DOM objects in the wrapper map. @@ -163,20 +149,4 @@ void visitActiveDOMObjects(DOMWrapperMap::Visitor* visitor) } } -#if ENABLE(SVG) - -void visitDOMSVGElementInstances(DOMWrapperMap::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 diff --git a/Source/WebCore/bindings/v8/V8DOMMap.h b/Source/WebCore/bindings/v8/V8DOMMap.h index 1363a79..7ec1105 100644 --- a/Source/WebCore/bindings/v8/V8DOMMap.h +++ b/Source/WebCore/bindings/v8/V8DOMMap.h @@ -38,9 +38,6 @@ namespace WebCore { class DOMDataStore; class Node; -#if ENABLE(SVG) - class SVGElementInstance; -#endif template 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& getDOMSVGElementInstanceMap(); - void visitSVGElementInstances(DOMWrapperMap::Visitor*); -#endif - void enableFasterDOMStoreAccess(); } // namespace WebCore diff --git a/Source/WebCore/bindings/v8/V8DOMWrapper.cpp b/Source/WebCore/bindings/v8/V8DOMWrapper.cpp index 0fad5e8..842a0b4 100644 --- a/Source/WebCore/bindings/v8/V8DOMWrapper.cpp +++ b/Source/WebCore/bindings/v8/V8DOMWrapper.cpp @@ -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" -- 2.7.4