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;
}