Update to API changes of V8 5.2

This commit is contained in:
Cheng Zhao 2016-07-04 15:07:50 +09:00
Родитель a1efa28520
Коммит 8a31e2d9c0
2 изменённых файлов: 19 добавлений и 11 удалений

Просмотреть файл

@ -9,8 +9,9 @@ namespace mate {
namespace internal { namespace internal {
CallbackHolderBase::CallbackHolderBase(v8::Isolate* isolate) CallbackHolderBase::CallbackHolderBase(v8::Isolate* isolate)
: MATE_PERSISTENT_INIT(isolate, v8_ref_, MATE_EXTERNAL_NEW(isolate, this)) { : v8_ref_(isolate, v8::External::New(isolate, this)) {
MATE_PERSISTENT_SET_WEAK(v8_ref_, this, &CallbackHolderBase::WeakCallback); v8_ref_.SetWeak(this, &CallbackHolderBase::FirstWeakCallback,
v8::WeakCallbackType::kParameter);
} }
CallbackHolderBase::~CallbackHolderBase() { CallbackHolderBase::~CallbackHolderBase() {
@ -18,16 +19,20 @@ CallbackHolderBase::~CallbackHolderBase() {
} }
v8::Local<v8::External> CallbackHolderBase::GetHandle(v8::Isolate* isolate) { v8::Local<v8::External> CallbackHolderBase::GetHandle(v8::Isolate* isolate) {
return MATE_PERSISTENT_TO_LOCAL(v8::External, isolate, v8_ref_); return v8::Local<v8::External>::New(isolate, v8_ref_);
} }
// static // static
MATE_WEAK_CALLBACK(CallbackHolderBase::WeakCallback, void CallbackHolderBase::FirstWeakCallback(
v8::External, const v8::WeakCallbackInfo<CallbackHolderBase>& data) {
CallbackHolderBase) { data.GetParameter()->v8_ref_.Reset();
MATE_WEAK_CALLBACK_INIT(CallbackHolderBase); data.SetSecondPassCallback(SecondWeakCallback);
MATE_PERSISTENT_RESET(self->v8_ref_); }
delete self;
// static
void CallbackHolderBase::SecondWeakCallback(
const v8::WeakCallbackInfo<CallbackHolderBase>& data) {
delete data.GetParameter();
} }
} // namespace internal } // namespace internal

Просмотреть файл

@ -62,9 +62,12 @@ class CallbackHolderBase {
virtual ~CallbackHolderBase(); virtual ~CallbackHolderBase();
private: private:
static MATE_WEAK_CALLBACK(WeakCallback, v8::External, CallbackHolderBase); static void FirstWeakCallback(
const v8::WeakCallbackInfo<CallbackHolderBase>& data);
static void SecondWeakCallback(
const v8::WeakCallbackInfo<CallbackHolderBase>& data);
v8::UniquePersistent<v8::External> v8_ref_; v8::Global<v8::External> v8_ref_;
DISALLOW_COPY_AND_ASSIGN(CallbackHolderBase); DISALLOW_COPY_AND_ASSIGN(CallbackHolderBase);
}; };