Index: src/runtime.cc |
diff --git a/src/runtime.cc b/src/runtime.cc |
index e46297253757d0d833cfdd3363c744a165c5de5a..43d12dc3c926ae99cfbb0aedcf760dd4ba7f261a 100644 |
--- a/src/runtime.cc |
+++ b/src/runtime.cc |
@@ -655,7 +655,7 @@ static void ArrayBufferWeakCallback(v8::Isolate* external_isolate, |
void* data) { |
Isolate* isolate = reinterpret_cast<Isolate*>(external_isolate); |
HandleScope scope(isolate); |
- Handle<Object> internal_object = Utils::OpenHandle(**object); |
+ Handle<Object> internal_object = Utils::OpenPersistent(object); |
Handle<JSArrayBuffer> array_buffer(JSArrayBuffer::cast(*internal_object)); |
if (!array_buffer->is_external()) { |
@@ -711,11 +711,10 @@ bool Runtime::SetupArrayBufferAllocatingData( |
SetupArrayBuffer(isolate, array_buffer, false, data, allocated_length); |
- v8::Isolate* external_isolate = reinterpret_cast<v8::Isolate*>(isolate); |
- v8::Persistent<v8::Value> weak_handle( |
- external_isolate, v8::Utils::ToLocal(Handle<Object>::cast(array_buffer))); |
- weak_handle.MakeWeak(external_isolate, data, ArrayBufferWeakCallback); |
- weak_handle.MarkIndependent(external_isolate); |
+ Handle<Object> persistent = isolate->global_handles()->Create(*array_buffer); |
+ GlobalHandles::MakeWeak(persistent.location(), data, ArrayBufferWeakCallback); |
+ GlobalHandles::MarkIndependent(persistent.location()); |
+ |
isolate->heap()->AdjustAmountOfExternalAllocatedMemory(allocated_length); |
return true; |