Index: Source/bindings/core/v8/V8Binding.h |
diff --git a/Source/bindings/core/v8/V8Binding.h b/Source/bindings/core/v8/V8Binding.h |
index f7fc1ee20efe04754f218d88ef572e21aa3ae3b1..a7785fc8fe0ea3a063b19dfa1a48121503f536af 100644 |
--- a/Source/bindings/core/v8/V8Binding.h |
+++ b/Source/bindings/core/v8/V8Binding.h |
@@ -55,12 +55,13 @@ namespace blink { |
class DOMWindow; |
class EventListener; |
class EventTarget; |
-class ExecutionContext; |
class ExceptionState; |
+class ExecutionContext; |
class Frame; |
class LocalDOMWindow; |
class LocalFrame; |
class NodeFilter; |
+class WorkerGlobalScope; |
class XPathNSResolver; |
template <typename T> |
@@ -216,6 +217,26 @@ inline void v8SetReturnValue(const CallbackInfo& callbackInfo, Node* impl) |
v8SetReturnValue(callbackInfo, wrapper); |
} |
+// Special versions for DOMWindow, WorkerGlobalScope and EventTarget |
+ |
+template<typename CallbackInfo> |
+inline void v8SetReturnValue(const CallbackInfo& callbackInfo, DOMWindow* impl) |
+{ |
+ v8SetReturnValue(callbackInfo, toV8(impl, callbackInfo.Holder(), callbackInfo.GetIsolate())); |
+} |
+ |
+template<typename CallbackInfo> |
+inline void v8SetReturnValue(const CallbackInfo& callbackInfo, EventTarget* impl) |
+{ |
+ v8SetReturnValue(callbackInfo, toV8(impl, callbackInfo.Holder(), callbackInfo.GetIsolate())); |
+} |
+ |
+template<typename CallbackInfo> |
+inline void v8SetReturnValue(const CallbackInfo& callbackInfo, WorkerGlobalScope* impl) |
+{ |
+ v8SetReturnValue(callbackInfo, toV8(impl, callbackInfo.Holder(), callbackInfo.GetIsolate())); |
+} |
+ |
template<typename CallbackInfo, typename T> |
inline void v8SetReturnValue(const CallbackInfo& callbackInfo, PassRefPtr<T> impl) |
{ |
@@ -245,10 +266,11 @@ inline void v8SetReturnValueForMainWorld(const CallbackInfo& callbackInfo, Scrip |
template<typename CallbackInfo> |
inline void v8SetReturnValueForMainWorld(const CallbackInfo& callbackInfo, Node* impl) |
{ |
- // Since EventTarget has [Custom=ToV8] and V8EventTarget.h defines its own |
- // v8SetReturnValue family, which are slow, we need to override them with |
- // optimized versions for Node and its subclasses. Without this overload, |
- // v8SetReturnValueForMainWorld for Node would be very slow. |
+ // Since EventTarget has a special version of ToV8 and V8EventTarget.h |
+ // defines its own v8SetReturnValue family, which are slow, we need to |
+ // override them with optimized versions for Node and its subclasses. |
+ // Without this overload, v8SetReturnValueForMainWorld for Node would be |
+ // very slow. |
// |
// class hierarchy: |
// ScriptWrappable <-- EventTarget <--+-- Node <-- ... |
@@ -265,6 +287,26 @@ inline void v8SetReturnValueForMainWorld(const CallbackInfo& callbackInfo, Node* |
v8SetReturnValueForMainWorld(callbackInfo, ScriptWrappable::fromNode(impl)); |
} |
+// Special versions for DOMWindow, WorkerGlobalScope and EventTarget |
+ |
+template<typename CallbackInfo> |
+inline void v8SetReturnValueForMainWorld(const CallbackInfo& callbackInfo, DOMWindow* impl) |
+{ |
+ v8SetReturnValue(callbackInfo, toV8(impl, callbackInfo.Holder(), callbackInfo.GetIsolate())); |
+} |
+ |
+template<typename CallbackInfo> |
+inline void v8SetReturnValueForMainWorld(const CallbackInfo& callbackInfo, EventTarget* impl) |
+{ |
+ v8SetReturnValue(callbackInfo, toV8(impl, callbackInfo.Holder(), callbackInfo.GetIsolate())); |
+} |
+ |
+template<typename CallbackInfo> |
+inline void v8SetReturnValueForMainWorld(const CallbackInfo& callbackInfo, WorkerGlobalScope* impl) |
+{ |
+ v8SetReturnValue(callbackInfo, toV8(impl, callbackInfo.Holder(), callbackInfo.GetIsolate())); |
+} |
+ |
template<typename CallbackInfo, typename T> |
inline void v8SetReturnValueForMainWorld(const CallbackInfo& callbackInfo, PassRefPtr<T> impl) |
{ |
@@ -303,6 +345,26 @@ inline void v8SetReturnValueFast(const CallbackInfo& callbackInfo, Node* impl, c |
v8SetReturnValue(callbackInfo, wrapper); |
} |
+// Special versions for DOMWindow, WorkerGlobalScope and EventTarget |
+ |
+template<typename CallbackInfo> |
+inline void v8SetReturnValueFast(const CallbackInfo& callbackInfo, DOMWindow* impl, const ScriptWrappable*) |
+{ |
+ v8SetReturnValue(callbackInfo, toV8(impl, callbackInfo.Holder(), callbackInfo.GetIsolate())); |
+} |
+ |
+template<typename CallbackInfo> |
+inline void v8SetReturnValueFast(const CallbackInfo& callbackInfo, EventTarget* impl, const ScriptWrappable*) |
+{ |
+ v8SetReturnValue(callbackInfo, toV8(impl, callbackInfo.Holder(), callbackInfo.GetIsolate())); |
+} |
+ |
+template<typename CallbackInfo> |
+inline void v8SetReturnValueFast(const CallbackInfo& callbackInfo, WorkerGlobalScope* impl, const ScriptWrappable*) |
+{ |
+ v8SetReturnValue(callbackInfo, toV8(impl, callbackInfo.Holder(), callbackInfo.GetIsolate())); |
+} |
+ |
template<typename CallbackInfo, typename T, typename Wrappable> |
inline void v8SetReturnValueFast(const CallbackInfo& callbackInfo, PassRefPtr<T> impl, const Wrappable* wrappable) |
{ |