Diff
Modified: trunk/Source/WebCore/ChangeLog (115796 => 115797)
--- trunk/Source/WebCore/ChangeLog 2012-05-02 05:54:44 UTC (rev 115796)
+++ trunk/Source/WebCore/ChangeLog 2012-05-02 06:07:03 UTC (rev 115797)
@@ -1,3 +1,60 @@
+2012-05-01 Kentaro Hara <[email protected]>
+
+ [V8] Add an Isolate parameter to setJSWrapperForXXX()
+ https://bugs.webkit.org/show_bug.cgi?id=85329
+
+ Reviewed by Adam Barth.
+
+ The objective is to pass Isolate around in V8 bindings.
+ This patch adds an Isolate parameter to setJSWrapperForXXX()
+ and passes Isolate to setJSWrapperForXXX() in CodeGeneratorV8.pm.
+ I'll pass Isolate to setJSWrapperForXXX() in custom bindings
+ in a follow-up patch.
+
+ No tests. No change in behavior.
+
+ * bindings/scripts/CodeGeneratorV8.pm: Modified as described above.
+ (GenerateConstructorCallback):
+ (GenerateEventConstructorCallback):
+ (GenerateNamedConstructorCallback):
+ (GenerateToV8Converters):
+ * bindings/v8/V8DOMWrapper.cpp:
+ (WebCore::V8DOMWrapper::setJSWrapperForDOMNode):
+ (WebCore::V8DOMWrapper::setJSWrapperForActiveDOMNode):
+ * bindings/v8/V8DOMWrapper.h:
+ (V8DOMWrapper):
+ (WebCore::V8DOMWrapper::setJSWrapperForDOMObject):
+ (WebCore::V8DOMWrapper::setJSWrapperForActiveDOMObject):
+
+ * bindings/scripts/test/V8/V8Float64Array.cpp: Updated run-bindings-tests results.
+ (WebCore::V8Float64Array::wrapSlow):
+ * bindings/scripts/test/V8/V8TestActiveDOMObject.cpp:
+ (WebCore::V8TestActiveDOMObject::wrapSlow):
+ * bindings/scripts/test/V8/V8TestCustomNamedGetter.cpp:
+ (WebCore::V8TestCustomNamedGetter::wrapSlow):
+ * bindings/scripts/test/V8/V8TestEventConstructor.cpp:
+ (WebCore::V8TestEventConstructor::constructorCallback):
+ (WebCore::V8TestEventConstructor::wrapSlow):
+ * bindings/scripts/test/V8/V8TestEventTarget.cpp:
+ (WebCore::V8TestEventTarget::wrapSlow):
+ * bindings/scripts/test/V8/V8TestInterface.cpp:
+ (WebCore::V8TestInterface::constructorCallback):
+ (WebCore::V8TestInterface::wrapSlow):
+ * bindings/scripts/test/V8/V8TestMediaQueryListListener.cpp:
+ (WebCore::V8TestMediaQueryListListener::wrapSlow):
+ * bindings/scripts/test/V8/V8TestNamedConstructor.cpp:
+ (WebCore::V8TestNamedConstructorConstructorCallback):
+ (WebCore::V8TestNamedConstructor::wrapSlow):
+ * bindings/scripts/test/V8/V8TestNode.cpp:
+ (WebCore::V8TestNode::constructorCallback):
+ (WebCore::V8TestNode::wrapSlow):
+ * bindings/scripts/test/V8/V8TestObj.cpp:
+ (WebCore::V8TestObj::constructorCallback):
+ (WebCore::V8TestObj::wrapSlow):
+ * bindings/scripts/test/V8/V8TestSerializedScriptValueInterface.cpp:
+ (WebCore::V8TestSerializedScriptValueInterface::constructorCallback):
+ (WebCore::V8TestSerializedScriptValueInterface::wrapSlow):
+
2012-05-01 Eric Seidel <[email protected]>
Add <iframe seamless> navigation code (and pass all the navigation tests)
Modified: trunk/Source/WebCore/bindings/scripts/CodeGeneratorV8.pm (115796 => 115797)
--- trunk/Source/WebCore/bindings/scripts/CodeGeneratorV8.pm 2012-05-02 05:54:44 UTC (rev 115796)
+++ trunk/Source/WebCore/bindings/scripts/CodeGeneratorV8.pm 2012-05-02 06:07:03 UTC (rev 115797)
@@ -1773,7 +1773,7 @@
push(@implContent, <<END);
V8DOMWrapper::setDOMWrapper(wrapper, &info, impl.get());
- V8DOMWrapper::setJSWrapperFor${DOMObject}(impl.release(), v8::Persistent<v8::Object>::New(wrapper));
+ V8DOMWrapper::setJSWrapperFor${DOMObject}(impl.release(), v8::Persistent<v8::Object>::New(wrapper), args.GetIsolate());
return args.Holder();
END
@@ -1818,7 +1818,7 @@
RefPtr<${implClassName}> event = ${implClassName}::create(type, eventInit);
V8DOMWrapper::setDOMWrapper(args.Holder(), &info, event.get());
- V8DOMWrapper::setJSWrapperForDOMObject(event.release(), v8::Persistent<v8::Object>::New(args.Holder()));
+ V8DOMWrapper::setJSWrapperForDOMObject(event.release(), v8::Persistent<v8::Object>::New(args.Holder()), args.GetIsolate());
return args.Holder();
}
@@ -1948,7 +1948,7 @@
push(@implContent, <<END);
V8DOMWrapper::setDOMWrapper(wrapper, &V8${implClassName}Constructor::info, impl.get());
- V8DOMWrapper::setJSWrapperFor${DOMObject}(impl.release(), v8::Persistent<v8::Object>::New(wrapper));
+ V8DOMWrapper::setJSWrapperFor${DOMObject}(impl.release(), v8::Persistent<v8::Object>::New(wrapper), args.GetIsolate());
return args.Holder();
END
@@ -3198,7 +3198,7 @@
END
}
push(@implContent, <<END);
- V8DOMWrapper::setJSWrapperFor${domMapName}(impl, wrapperHandle);
+ V8DOMWrapper::setJSWrapperFor${domMapName}(impl, wrapperHandle, isolate);
return wrapper;
}
END
Modified: trunk/Source/WebCore/bindings/scripts/test/V8/V8Float64Array.cpp (115796 => 115797)
--- trunk/Source/WebCore/bindings/scripts/test/V8/V8Float64Array.cpp 2012-05-02 05:54:44 UTC (rev 115796)
+++ trunk/Source/WebCore/bindings/scripts/test/V8/V8Float64Array.cpp 2012-05-02 06:07:03 UTC (rev 115797)
@@ -132,7 +132,7 @@
if (!hasDependentLifetime)
wrapperHandle.MarkIndependent();
- V8DOMWrapper::setJSWrapperForDOMObject(impl, wrapperHandle);
+ V8DOMWrapper::setJSWrapperForDOMObject(impl, wrapperHandle, isolate);
return wrapper;
}
Modified: trunk/Source/WebCore/bindings/scripts/test/V8/V8TestActiveDOMObject.cpp (115796 => 115797)
--- trunk/Source/WebCore/bindings/scripts/test/V8/V8TestActiveDOMObject.cpp 2012-05-02 05:54:44 UTC (rev 115796)
+++ trunk/Source/WebCore/bindings/scripts/test/V8/V8TestActiveDOMObject.cpp 2012-05-02 06:07:03 UTC (rev 115797)
@@ -188,7 +188,7 @@
if (!hasDependentLifetime)
wrapperHandle.MarkIndependent();
- V8DOMWrapper::setJSWrapperForDOMObject(impl, wrapperHandle);
+ V8DOMWrapper::setJSWrapperForDOMObject(impl, wrapperHandle, isolate);
return wrapper;
}
Modified: trunk/Source/WebCore/bindings/scripts/test/V8/V8TestCustomNamedGetter.cpp (115796 => 115797)
--- trunk/Source/WebCore/bindings/scripts/test/V8/V8TestCustomNamedGetter.cpp 2012-05-02 05:54:44 UTC (rev 115796)
+++ trunk/Source/WebCore/bindings/scripts/test/V8/V8TestCustomNamedGetter.cpp 2012-05-02 06:07:03 UTC (rev 115797)
@@ -122,7 +122,7 @@
if (!hasDependentLifetime)
wrapperHandle.MarkIndependent();
- V8DOMWrapper::setJSWrapperForDOMObject(impl, wrapperHandle);
+ V8DOMWrapper::setJSWrapperForDOMObject(impl, wrapperHandle, isolate);
return wrapper;
}
Modified: trunk/Source/WebCore/bindings/scripts/test/V8/V8TestEventConstructor.cpp (115796 => 115797)
--- trunk/Source/WebCore/bindings/scripts/test/V8/V8TestEventConstructor.cpp 2012-05-02 05:54:44 UTC (rev 115796)
+++ trunk/Source/WebCore/bindings/scripts/test/V8/V8TestEventConstructor.cpp 2012-05-02 06:07:03 UTC (rev 115797)
@@ -86,7 +86,7 @@
RefPtr<TestEventConstructor> event = TestEventConstructor::create(type, eventInit);
V8DOMWrapper::setDOMWrapper(args.Holder(), &info, event.get());
- V8DOMWrapper::setJSWrapperForDOMObject(event.release(), v8::Persistent<v8::Object>::New(args.Holder()));
+ V8DOMWrapper::setJSWrapperForDOMObject(event.release(), v8::Persistent<v8::Object>::New(args.Holder()), args.GetIsolate());
return args.Holder();
}
@@ -158,7 +158,7 @@
if (!hasDependentLifetime)
wrapperHandle.MarkIndependent();
- V8DOMWrapper::setJSWrapperForDOMObject(impl, wrapperHandle);
+ V8DOMWrapper::setJSWrapperForDOMObject(impl, wrapperHandle, isolate);
return wrapper;
}
Modified: trunk/Source/WebCore/bindings/scripts/test/V8/V8TestEventTarget.cpp (115796 => 115797)
--- trunk/Source/WebCore/bindings/scripts/test/V8/V8TestEventTarget.cpp 2012-05-02 05:54:44 UTC (rev 115796)
+++ trunk/Source/WebCore/bindings/scripts/test/V8/V8TestEventTarget.cpp 2012-05-02 06:07:03 UTC (rev 115797)
@@ -185,7 +185,7 @@
if (!hasDependentLifetime)
wrapperHandle.MarkIndependent();
- V8DOMWrapper::setJSWrapperForDOMObject(impl, wrapperHandle);
+ V8DOMWrapper::setJSWrapperForDOMObject(impl, wrapperHandle, isolate);
return wrapper;
}
Modified: trunk/Source/WebCore/bindings/scripts/test/V8/V8TestInterface.cpp (115796 => 115797)
--- trunk/Source/WebCore/bindings/scripts/test/V8/V8TestInterface.cpp 2012-05-02 05:54:44 UTC (rev 115796)
+++ trunk/Source/WebCore/bindings/scripts/test/V8/V8TestInterface.cpp 2012-05-02 06:07:03 UTC (rev 115797)
@@ -229,7 +229,7 @@
goto fail;
V8DOMWrapper::setDOMWrapper(wrapper, &info, impl.get());
- V8DOMWrapper::setJSWrapperForActiveDOMObject(impl.release(), v8::Persistent<v8::Object>::New(wrapper));
+ V8DOMWrapper::setJSWrapperForActiveDOMObject(impl.release(), v8::Persistent<v8::Object>::New(wrapper), args.GetIsolate());
return args.Holder();
fail:
return throwError(ec);
@@ -317,7 +317,7 @@
if (!hasDependentLifetime)
wrapperHandle.MarkIndependent();
- V8DOMWrapper::setJSWrapperForActiveDOMObject(impl, wrapperHandle);
+ V8DOMWrapper::setJSWrapperForActiveDOMObject(impl, wrapperHandle, isolate);
return wrapper;
}
Modified: trunk/Source/WebCore/bindings/scripts/test/V8/V8TestMediaQueryListListener.cpp (115796 => 115797)
--- trunk/Source/WebCore/bindings/scripts/test/V8/V8TestMediaQueryListListener.cpp 2012-05-02 05:54:44 UTC (rev 115796)
+++ trunk/Source/WebCore/bindings/scripts/test/V8/V8TestMediaQueryListListener.cpp 2012-05-02 06:07:03 UTC (rev 115797)
@@ -122,7 +122,7 @@
if (!hasDependentLifetime)
wrapperHandle.MarkIndependent();
- V8DOMWrapper::setJSWrapperForDOMObject(impl, wrapperHandle);
+ V8DOMWrapper::setJSWrapperForDOMObject(impl, wrapperHandle, isolate);
return wrapper;
}
Modified: trunk/Source/WebCore/bindings/scripts/test/V8/V8TestNamedConstructor.cpp (115796 => 115797)
--- trunk/Source/WebCore/bindings/scripts/test/V8/V8TestNamedConstructor.cpp 2012-05-02 05:54:44 UTC (rev 115796)
+++ trunk/Source/WebCore/bindings/scripts/test/V8/V8TestNamedConstructor.cpp 2012-05-02 06:07:03 UTC (rev 115797)
@@ -77,7 +77,7 @@
goto fail;
V8DOMWrapper::setDOMWrapper(wrapper, &V8TestNamedConstructorConstructor::info, impl.get());
- V8DOMWrapper::setJSWrapperForActiveDOMObject(impl.release(), v8::Persistent<v8::Object>::New(wrapper));
+ V8DOMWrapper::setJSWrapperForActiveDOMObject(impl.release(), v8::Persistent<v8::Object>::New(wrapper), args.GetIsolate());
return args.Holder();
fail:
return throwError(ec);
@@ -166,7 +166,7 @@
if (!hasDependentLifetime)
wrapperHandle.MarkIndependent();
- V8DOMWrapper::setJSWrapperForActiveDOMObject(impl, wrapperHandle);
+ V8DOMWrapper::setJSWrapperForActiveDOMObject(impl, wrapperHandle, isolate);
return wrapper;
}
Modified: trunk/Source/WebCore/bindings/scripts/test/V8/V8TestNode.cpp (115796 => 115797)
--- trunk/Source/WebCore/bindings/scripts/test/V8/V8TestNode.cpp 2012-05-02 05:54:44 UTC (rev 115796)
+++ trunk/Source/WebCore/bindings/scripts/test/V8/V8TestNode.cpp 2012-05-02 06:07:03 UTC (rev 115797)
@@ -54,7 +54,7 @@
v8::Handle<v8::Object> wrapper = args.Holder();
V8DOMWrapper::setDOMWrapper(wrapper, &info, impl.get());
- V8DOMWrapper::setJSWrapperForDOMNode(impl.release(), v8::Persistent<v8::Object>::New(wrapper));
+ V8DOMWrapper::setJSWrapperForDOMNode(impl.release(), v8::Persistent<v8::Object>::New(wrapper), args.GetIsolate());
return args.Holder();
}
@@ -134,7 +134,7 @@
if (!hasDependentLifetime)
wrapperHandle.MarkIndependent();
wrapperHandle.SetWrapperClassId(v8DOMSubtreeClassId);
- V8DOMWrapper::setJSWrapperForDOMNode(impl, wrapperHandle);
+ V8DOMWrapper::setJSWrapperForDOMNode(impl, wrapperHandle, isolate);
return wrapper;
}
Modified: trunk/Source/WebCore/bindings/scripts/test/V8/V8TestObj.cpp (115796 => 115797)
--- trunk/Source/WebCore/bindings/scripts/test/V8/V8TestObj.cpp 2012-05-02 05:54:44 UTC (rev 115796)
+++ trunk/Source/WebCore/bindings/scripts/test/V8/V8TestObj.cpp 2012-05-02 06:07:03 UTC (rev 115797)
@@ -2248,7 +2248,7 @@
v8::Handle<v8::Object> wrapper = args.Holder();
V8DOMWrapper::setDOMWrapper(wrapper, &info, impl.get());
- V8DOMWrapper::setJSWrapperForDOMObject(impl.release(), v8::Persistent<v8::Object>::New(wrapper));
+ V8DOMWrapper::setJSWrapperForDOMObject(impl.release(), v8::Persistent<v8::Object>::New(wrapper), args.GetIsolate());
return args.Holder();
}
@@ -2401,7 +2401,7 @@
if (!hasDependentLifetime)
wrapperHandle.MarkIndependent();
- V8DOMWrapper::setJSWrapperForDOMObject(impl, wrapperHandle);
+ V8DOMWrapper::setJSWrapperForDOMObject(impl, wrapperHandle, isolate);
return wrapper;
}
Modified: trunk/Source/WebCore/bindings/scripts/test/V8/V8TestSerializedScriptValueInterface.cpp (115796 => 115797)
--- trunk/Source/WebCore/bindings/scripts/test/V8/V8TestSerializedScriptValueInterface.cpp 2012-05-02 05:54:44 UTC (rev 115796)
+++ trunk/Source/WebCore/bindings/scripts/test/V8/V8TestSerializedScriptValueInterface.cpp 2012-05-02 06:07:03 UTC (rev 115797)
@@ -235,7 +235,7 @@
v8::Handle<v8::Object> wrapper = args.Holder();
V8DOMWrapper::setDOMWrapper(wrapper, &info, impl.get());
- V8DOMWrapper::setJSWrapperForDOMObject(impl.release(), v8::Persistent<v8::Object>::New(wrapper));
+ V8DOMWrapper::setJSWrapperForDOMObject(impl.release(), v8::Persistent<v8::Object>::New(wrapper), args.GetIsolate());
return args.Holder();
}
@@ -305,7 +305,7 @@
if (!hasDependentLifetime)
wrapperHandle.MarkIndependent();
- V8DOMWrapper::setJSWrapperForDOMObject(impl, wrapperHandle);
+ V8DOMWrapper::setJSWrapperForDOMObject(impl, wrapperHandle, isolate);
return wrapper;
}
Modified: trunk/Source/WebCore/bindings/v8/V8DOMWrapper.cpp (115796 => 115797)
--- trunk/Source/WebCore/bindings/v8/V8DOMWrapper.cpp 2012-05-02 05:54:44 UTC (rev 115796)
+++ trunk/Source/WebCore/bindings/v8/V8DOMWrapper.cpp 2012-05-02 06:07:03 UTC (rev 115797)
@@ -68,18 +68,18 @@
namespace WebCore {
-void V8DOMWrapper::setJSWrapperForDOMNode(PassRefPtr<Node> node, v8::Persistent<v8::Object> wrapper)
+void V8DOMWrapper::setJSWrapperForDOMNode(PassRefPtr<Node> node, v8::Persistent<v8::Object> wrapper, v8::Isolate* isolate)
{
ASSERT(maybeDOMWrapper(wrapper));
ASSERT(!node->isActiveNode());
- getDOMNodeMap().set(node.leakRef(), wrapper);
+ getDOMNodeMap(isolate).set(node.leakRef(), wrapper);
}
-void V8DOMWrapper::setJSWrapperForActiveDOMNode(PassRefPtr<Node> node, v8::Persistent<v8::Object> wrapper)
+void V8DOMWrapper::setJSWrapperForActiveDOMNode(PassRefPtr<Node> node, v8::Persistent<v8::Object> wrapper, v8::Isolate* isolate)
{
ASSERT(maybeDOMWrapper(wrapper));
ASSERT(node->isActiveNode());
- getActiveDOMNodeMap().set(node.leakRef(), wrapper);
+ getActiveDOMNodeMap(isolate).set(node.leakRef(), wrapper);
}
v8::Local<v8::Function> V8DOMWrapper::constructorForType(WrapperTypeInfo* type, DOMWindow* window)
Modified: trunk/Source/WebCore/bindings/v8/V8DOMWrapper.h (115796 => 115797)
--- trunk/Source/WebCore/bindings/v8/V8DOMWrapper.h 2012-05-02 05:54:44 UTC (rev 115796)
+++ trunk/Source/WebCore/bindings/v8/V8DOMWrapper.h 2012-05-02 06:07:03 UTC (rev 115797)
@@ -106,10 +106,10 @@
static v8::Local<v8::Function> constructorForType(WrapperTypeInfo*, WorkerContext*);
#endif
- template<typename T> static void setJSWrapperForDOMObject(PassRefPtr<T>, v8::Persistent<v8::Object>);
- template<typename T> static void setJSWrapperForActiveDOMObject(PassRefPtr<T>, v8::Persistent<v8::Object>);
- static void setJSWrapperForDOMNode(PassRefPtr<Node>, v8::Persistent<v8::Object>);
- static void setJSWrapperForActiveDOMNode(PassRefPtr<Node>, v8::Persistent<v8::Object>);
+ template<typename T> static void setJSWrapperForDOMObject(PassRefPtr<T>, v8::Persistent<v8::Object>, v8::Isolate* = 0);
+ template<typename T> static void setJSWrapperForActiveDOMObject(PassRefPtr<T>, v8::Persistent<v8::Object>, v8::Isolate* = 0);
+ static void setJSWrapperForDOMNode(PassRefPtr<Node>, v8::Persistent<v8::Object>, v8::Isolate* = 0);
+ static void setJSWrapperForActiveDOMNode(PassRefPtr<Node>, v8::Persistent<v8::Object>, v8::Isolate* = 0);
static bool isValidDOMObject(v8::Handle<v8::Value>);
@@ -155,19 +155,19 @@
};
template<typename T>
- void V8DOMWrapper::setJSWrapperForDOMObject(PassRefPtr<T> object, v8::Persistent<v8::Object> wrapper)
+ void V8DOMWrapper::setJSWrapperForDOMObject(PassRefPtr<T> object, v8::Persistent<v8::Object> wrapper, v8::Isolate* isolate)
{
ASSERT(maybeDOMWrapper(wrapper));
ASSERT(!domWrapperType(wrapper)->toActiveDOMObjectFunction);
- getDOMObjectMap().set(object.leakRef(), wrapper);
+ getDOMObjectMap(isolate).set(object.leakRef(), wrapper);
}
template<typename T>
- void V8DOMWrapper::setJSWrapperForActiveDOMObject(PassRefPtr<T> object, v8::Persistent<v8::Object> wrapper)
+ void V8DOMWrapper::setJSWrapperForActiveDOMObject(PassRefPtr<T> object, v8::Persistent<v8::Object> wrapper, v8::Isolate* isolate)
{
ASSERT(maybeDOMWrapper(wrapper));
ASSERT(domWrapperType(wrapper)->toActiveDOMObjectFunction);
- getActiveDOMObjectMap().set(object.leakRef(), wrapper);
+ getActiveDOMObjectMap(isolate).set(object.leakRef(), wrapper);
}
}