Skip to content

Commit 393d33e

Browse files
committed
src: upgrade after v8 api change
The prototype of v8::Persistent<T>::MakeWeak() has changed. Update the code in src/ to follow suit.
1 parent 2dbc5ea commit 393d33e

2 files changed

Lines changed: 15 additions & 13 deletions

File tree

src/node_object_wrap.h

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -115,14 +115,13 @@ class NODE_EXTERN ObjectWrap {
115115

116116
private:
117117
static void WeakCallback(v8::Isolate* isolate,
118-
v8::Persistent<v8::Value> value,
119-
void* data) {
118+
v8::Persistent<v8::Object>* pobj,
119+
ObjectWrap* wrap) {
120120
v8::HandleScope scope(isolate);
121-
ObjectWrap *obj = static_cast<ObjectWrap*>(data);
122-
assert(value == obj->handle_);
123-
assert(!obj->refs_);
124-
assert(value.IsNearDeath(isolate));
125-
delete obj;
121+
assert(wrap->refs_ == 0);
122+
assert(*pobj == wrap->handle_);
123+
assert((*pobj).IsNearDeath(isolate));
124+
delete wrap;
126125
}
127126
};
128127

src/v8_typed_array.cc

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -69,10 +69,11 @@ class ArrayBuffer {
6969
}
7070

7171
private:
72-
static void WeakCallback(v8::Isolate* env,
73-
v8::Persistent<v8::Value> value,
72+
static void WeakCallback(v8::Isolate* isolate,
73+
v8::Persistent<v8::Object>* pobj,
7474
void* data) {
75-
v8::Object* obj = v8::Object::Cast(*value);
75+
v8::HandleScope handle_scope(isolate);
76+
v8::Local<v8::Object> obj = v8::Local<v8::Object>::New(*pobj);
7677

7778
void* ptr = obj->GetIndexedPropertiesExternalArrayData();
7879
int element_size = v8_typed_array::SizeOfArrayElementForType(
@@ -82,8 +83,8 @@ class ArrayBuffer {
8283

8384
node::node_isolate->AdjustAmountOfExternalAllocatedMemory(-size);
8485

85-
value.ClearWeak(env);
86-
value.Dispose(env);
86+
(*pobj).ClearWeak(isolate);
87+
(*pobj).Dispose(isolate);
8788

8889
free(ptr);
8990
}
@@ -128,7 +129,9 @@ class ArrayBuffer {
128129

129130
v8::Persistent<v8::Object> persistent =
130131
v8::Persistent<v8::Object>::New(node::node_isolate, args.This());
131-
persistent.MakeWeak(node::node_isolate, NULL, &ArrayBuffer::WeakCallback);
132+
persistent.MakeWeak(node::node_isolate,
133+
static_cast<void*>(NULL),
134+
&ArrayBuffer::WeakCallback);
132135

133136
return args.This();
134137
}

0 commit comments

Comments
 (0)