Commit c8d79340 authored by Yuki Shiino's avatar Yuki Shiino Committed by Commit Bot

v8binding: Remove unnecessary v8::Persistent from IDL callbacks

This is a quick fix to remove v8::Persistent from IDL callbacks.
V8PersistentCallback{Function,Interface}Base should be removed
in a follow-up patch.

Change-Id: Ic6526252749e6d70c8c02092ae0b07716702e176
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1645713Reviewed-by: default avatarKentaro Hara <haraken@chromium.org>
Reviewed-by: default avatarMichael Lippautz <mlippautz@chromium.org>
Reviewed-by: default avatarHitoshi Yoshida <peria@chromium.org>
Commit-Queue: Yuki Shiino <yukishiino@chromium.org>
Cr-Commit-Position: refs/heads/master@{#666283}
parent 7cd69675
...@@ -86,15 +86,6 @@ void CallbackFunctionBase::EvaluateAsPartOfCallback( ...@@ -86,15 +86,6 @@ void CallbackFunctionBase::EvaluateAsPartOfCallback(
std::move(closure).Run(); std::move(closure).Run();
} }
V8PersistentCallbackFunctionBase::V8PersistentCallbackFunctionBase(
CallbackFunctionBase* callback_function)
: callback_function_(callback_function) {
v8::Isolate* isolate = callback_function_->GetIsolate();
v8::HandleScope scope(isolate);
auto local = callback_function_->callback_function_.NewLocal(isolate);
v8_function_.Reset(isolate, local);
}
void V8PersistentCallbackFunctionBase::Trace(blink::Visitor* visitor) { void V8PersistentCallbackFunctionBase::Trace(blink::Visitor* visitor) {
visitor->Trace(callback_function_); visitor->Trace(callback_function_);
} }
......
...@@ -112,6 +112,8 @@ class PLATFORM_EXPORT CallbackFunctionBase ...@@ -112,6 +112,8 @@ class PLATFORM_EXPORT CallbackFunctionBase
friend class V8PersistentCallbackFunctionBase; friend class V8PersistentCallbackFunctionBase;
}; };
// CAUTION: THIS CLASS IS OBSOLETE AFTER THE UNIFIED HEAP AND WILL BE REMOVED.
//
// V8PersistentCallbackFunctionBase retains the underlying v8::Function of a // V8PersistentCallbackFunctionBase retains the underlying v8::Function of a
// CallbackFunctionBase without wrapper-tracing. This class is necessary and // CallbackFunctionBase without wrapper-tracing. This class is necessary and
// useful where wrapper-tracing is not suitable. Remember that, as a nature of // useful where wrapper-tracing is not suitable. Remember that, as a nature of
...@@ -122,12 +124,14 @@ class PLATFORM_EXPORT CallbackFunctionBase ...@@ -122,12 +124,14 @@ class PLATFORM_EXPORT CallbackFunctionBase
class PLATFORM_EXPORT V8PersistentCallbackFunctionBase class PLATFORM_EXPORT V8PersistentCallbackFunctionBase
: public GarbageCollectedFinalized<V8PersistentCallbackFunctionBase> { : public GarbageCollectedFinalized<V8PersistentCallbackFunctionBase> {
public: public:
virtual ~V8PersistentCallbackFunctionBase() { v8_function_.Reset(); } virtual ~V8PersistentCallbackFunctionBase() = default;
virtual void Trace(blink::Visitor*); virtual void Trace(blink::Visitor*);
protected: protected:
explicit V8PersistentCallbackFunctionBase(CallbackFunctionBase*); explicit V8PersistentCallbackFunctionBase(
CallbackFunctionBase* callback_function)
: callback_function_(callback_function) {}
template <typename V8CallbackFunction> template <typename V8CallbackFunction>
V8CallbackFunction* As() { V8CallbackFunction* As() {
...@@ -139,9 +143,6 @@ class PLATFORM_EXPORT V8PersistentCallbackFunctionBase ...@@ -139,9 +143,6 @@ class PLATFORM_EXPORT V8PersistentCallbackFunctionBase
private: private:
Member<CallbackFunctionBase> callback_function_; Member<CallbackFunctionBase> callback_function_;
// Use v8::Object instead of v8::Function in order to handle
// [TreatNonObjectAsNull].
v8::Persistent<v8::Object> v8_function_;
}; };
// V8PersistentCallbackFunction<V8CallbackFunction> is a counter-part of // V8PersistentCallbackFunction<V8CallbackFunction> is a counter-part of
......
...@@ -72,15 +72,6 @@ ScriptState* CallbackInterfaceBase::CallbackRelevantScriptStateOrThrowException( ...@@ -72,15 +72,6 @@ ScriptState* CallbackInterfaceBase::CallbackRelevantScriptStateOrThrowException(
return nullptr; return nullptr;
} }
V8PersistentCallbackInterfaceBase::V8PersistentCallbackInterfaceBase(
CallbackInterfaceBase* callback_interface)
: callback_interface_(callback_interface) {
v8::Isolate* isolate = callback_interface_->GetIsolate();
v8::HandleScope scope(isolate);
auto local = callback_interface_->callback_object_.NewLocal(isolate);
v8_object_.Reset(isolate, local);
}
void V8PersistentCallbackInterfaceBase::Trace(blink::Visitor* visitor) { void V8PersistentCallbackInterfaceBase::Trace(blink::Visitor* visitor) {
visitor->Trace(callback_interface_); visitor->Trace(callback_interface_);
} }
......
...@@ -109,6 +109,8 @@ class PLATFORM_EXPORT CallbackInterfaceBase ...@@ -109,6 +109,8 @@ class PLATFORM_EXPORT CallbackInterfaceBase
friend class V8PersistentCallbackInterfaceBase; friend class V8PersistentCallbackInterfaceBase;
}; };
// CAUTION: THIS CLASS IS OBSOLETE AFTER THE UNIFIED HEAP AND WILL BE REMOVED.
//
// V8PersistentCallbackInterfaceBase retains the underlying v8::Object of a // V8PersistentCallbackInterfaceBase retains the underlying v8::Object of a
// CallbackInterfaceBase without wrapper-tracing. This class is necessary and // CallbackInterfaceBase without wrapper-tracing. This class is necessary and
// useful where wrapper-tracing is not suitable. Remember that, as a nature of // useful where wrapper-tracing is not suitable. Remember that, as a nature of
...@@ -119,14 +121,16 @@ class PLATFORM_EXPORT CallbackInterfaceBase ...@@ -119,14 +121,16 @@ class PLATFORM_EXPORT CallbackInterfaceBase
class PLATFORM_EXPORT V8PersistentCallbackInterfaceBase class PLATFORM_EXPORT V8PersistentCallbackInterfaceBase
: public GarbageCollectedFinalized<V8PersistentCallbackInterfaceBase> { : public GarbageCollectedFinalized<V8PersistentCallbackInterfaceBase> {
public: public:
virtual ~V8PersistentCallbackInterfaceBase() { v8_object_.Reset(); } virtual ~V8PersistentCallbackInterfaceBase() = default;
virtual void Trace(blink::Visitor*); virtual void Trace(blink::Visitor*);
v8::Isolate* GetIsolate() { return callback_interface_->GetIsolate(); } v8::Isolate* GetIsolate() { return callback_interface_->GetIsolate(); }
protected: protected:
explicit V8PersistentCallbackInterfaceBase(CallbackInterfaceBase*); explicit V8PersistentCallbackInterfaceBase(
CallbackInterfaceBase* callback_interface)
: callback_interface_(callback_interface) {}
template <typename V8CallbackInterface> template <typename V8CallbackInterface>
V8CallbackInterface* As() { V8CallbackInterface* As() {
...@@ -138,7 +142,6 @@ class PLATFORM_EXPORT V8PersistentCallbackInterfaceBase ...@@ -138,7 +142,6 @@ class PLATFORM_EXPORT V8PersistentCallbackInterfaceBase
private: private:
Member<CallbackInterfaceBase> callback_interface_; Member<CallbackInterfaceBase> callback_interface_;
v8::Persistent<v8::Object> v8_object_;
}; };
// V8PersistentCallbackInterface<V8CallbackInterface> is a counter-part of // V8PersistentCallbackInterface<V8CallbackInterface> is a counter-part of
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment