Title: [133244] trunk/Source/WebCore
- Revision
- 133244
- Author
- [email protected]
- Date
- 2012-11-01 17:24:06 -0700 (Thu, 01 Nov 2012)
Log Message
[V8] Generalize NodeWrapperMap to be able to handle other sorts of keys
https://bugs.webkit.org/show_bug.cgi?id=100973
Reviewed by Kentaro Hara.
This is the first step towards using intrusive DOM wrapper maps more
widely in WebCore (see
http://lists.webkit.org/pipermail/webkit-dev/2012-November/022686.html
for more context).
* bindings/v8/DOMDataStore.cpp:
(WebCore::DOMDataStore::DOMDataStore):
* bindings/v8/IntrusiveDOMWrapperMap.h:
(WebCore):
(WebCore::IntrusiveDOMWrapperMap::weakCallback):
Modified Paths
Diff
Modified: trunk/Source/WebCore/ChangeLog (133243 => 133244)
--- trunk/Source/WebCore/ChangeLog 2012-11-02 00:07:35 UTC (rev 133243)
+++ trunk/Source/WebCore/ChangeLog 2012-11-02 00:24:06 UTC (rev 133244)
@@ -1,3 +1,21 @@
+2012-11-01 Adam Barth <[email protected]>
+
+ [V8] Generalize NodeWrapperMap to be able to handle other sorts of keys
+ https://bugs.webkit.org/show_bug.cgi?id=100973
+
+ Reviewed by Kentaro Hara.
+
+ This is the first step towards using intrusive DOM wrapper maps more
+ widely in WebCore (see
+ http://lists.webkit.org/pipermail/webkit-dev/2012-November/022686.html
+ for more context).
+
+ * bindings/v8/DOMDataStore.cpp:
+ (WebCore::DOMDataStore::DOMDataStore):
+ * bindings/v8/IntrusiveDOMWrapperMap.h:
+ (WebCore):
+ (WebCore::IntrusiveDOMWrapperMap::weakCallback):
+
2012-11-01 Alexandru Chiculita <[email protected]>
[CSS Shaders] CustomFilterOperation should be converted to ValidatedCustomFilterOperation before using it
Modified: trunk/Source/WebCore/bindings/v8/DOMDataStore.cpp (133243 => 133244)
--- trunk/Source/WebCore/bindings/v8/DOMDataStore.cpp 2012-11-02 00:07:35 UTC (rev 133243)
+++ trunk/Source/WebCore/bindings/v8/DOMDataStore.cpp 2012-11-02 00:24:06 UTC (rev 133244)
@@ -43,7 +43,7 @@
: m_type(type)
{
if (type == MainWorld)
- m_domNodeMap = adoptPtr(new DOMNodeWrapperMap);
+ m_domNodeMap = adoptPtr(new IntrusiveDOMWrapperMap<Node>);
else {
ASSERT(type == IsolatedWorld || type == Worker);
// FIXME: In principle, we shouldn't need to create this
Modified: trunk/Source/WebCore/bindings/v8/IntrusiveDOMWrapperMap.h (133243 => 133244)
--- trunk/Source/WebCore/bindings/v8/IntrusiveDOMWrapperMap.h 2012-11-02 00:07:35 UTC (rev 133243)
+++ trunk/Source/WebCore/bindings/v8/IntrusiveDOMWrapperMap.h 2012-11-02 00:24:06 UTC (rev 133244)
@@ -35,19 +35,19 @@
namespace WebCore {
-class DOMNodeWrapperMap : public DOMWrapperMap<Node> {
+template<class KeyType>
+class IntrusiveDOMWrapperMap : public DOMWrapperMap<KeyType> {
public:
- virtual v8::Persistent<v8::Object> get(Node* node) OVERRIDE
+ virtual v8::Persistent<v8::Object> get(KeyType* key) OVERRIDE
{
- return node->wrapper();
+ return key->wrapper();
}
- virtual void set(Node* node, v8::Persistent<v8::Object> wrapper) OVERRIDE
+ virtual void set(KeyType* key, v8::Persistent<v8::Object> wrapper) OVERRIDE
{
- ASSERT(node && node->wrapper().IsEmpty());
- ASSERT(wrapper.WrapperClassId() == v8DOMNodeClassId);
- node->setWrapper(wrapper);
- wrapper.MakeWeak(node, weakCallback);
+ ASSERT(key && key->wrapper().IsEmpty());
+ key->setWrapper(wrapper);
+ wrapper.MakeWeak(key, weakCallback);
}
virtual void clear() OVERRIDE
@@ -63,13 +63,13 @@
private:
static void weakCallback(v8::Persistent<v8::Value> value, void* context)
{
- Node* node = static_cast<Node*>(context);
+ KeyType* key = static_cast<KeyType*>(context);
ASSERT(value->IsObject());
- ASSERT(node->wrapper() == v8::Persistent<v8::Object>::Cast(value));
+ ASSERT(key->wrapper() == v8::Persistent<v8::Object>::Cast(value));
- node->clearWrapper();
+ key->clearWrapper();
value.Dispose();
- node->deref();
+ key->deref();
}
};
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo/webkit-changes