| Index: src/d8.cc
|
| diff --git a/src/d8.cc b/src/d8.cc
|
| index 407488ff0db064e021b137d9ec9a2832bbfa6213..89ddddd155415b3b2344177583230681705fdbcd 100644
|
| --- a/src/d8.cc
|
| +++ b/src/d8.cc
|
| @@ -102,7 +102,7 @@ class Symbols {
|
| }
|
|
|
| ~Symbols() {
|
| -#define DISPOSE_SYMBOL(name, value) name##_.Dispose();
|
| +#define DISPOSE_SYMBOL(name, value) name##_.Dispose(isolate_);
|
| FOR_EACH_SYMBOL(DISPOSE_SYMBOL)
|
| #undef DISPOSE_SYMBOL
|
| isolate_->SetData(NULL); // Not really needed, just to be sure...
|
| @@ -400,8 +400,8 @@ Handle<Value> Shell::CreateExternalArrayBuffer(Isolate* isolate,
|
|
|
| buffer->SetHiddenValue(Symbols::ArrayBufferMarkerPropName(isolate), True());
|
| Persistent<Object> persistent_array = Persistent<Object>::New(buffer);
|
| - persistent_array.MakeWeak(data, ExternalArrayWeakCallback);
|
| - persistent_array.MarkIndependent();
|
| + persistent_array.MakeWeak(isolate, data, ExternalArrayWeakCallback);
|
| + persistent_array.MarkIndependent(isolate);
|
| V8::AdjustAmountOfExternalAllocatedMemory(length);
|
|
|
| buffer->SetIndexedPropertiesToExternalArrayData(
|
| @@ -826,14 +826,15 @@ Handle<Value> Shell::ArraySet(const Arguments& args) {
|
| }
|
|
|
|
|
| -void Shell::ExternalArrayWeakCallback(Persistent<Value> object, void* data) {
|
| +void Shell::ExternalArrayWeakCallback(v8::Isolate* isolate,
|
| + Persistent<Value> object,
|
| + void* data) {
|
| HandleScope scope;
|
| - Isolate* isolate = Isolate::GetCurrent();
|
| int32_t length =
|
| object->ToObject()->Get(Symbols::byteLength(isolate))->Uint32Value();
|
| V8::AdjustAmountOfExternalAllocatedMemory(-length);
|
| delete[] static_cast<uint8_t*>(data);
|
| - object.Dispose();
|
| + object.Dispose(isolate);
|
| }
|
|
|
|
|
| @@ -1443,8 +1444,8 @@ Handle<Value> Shell::ReadBuffer(const Arguments& args) {
|
| Handle<Object> buffer = Object::New();
|
| buffer->SetHiddenValue(Symbols::ArrayBufferMarkerPropName(isolate), True());
|
| Persistent<Object> persistent_buffer = Persistent<Object>::New(buffer);
|
| - persistent_buffer.MakeWeak(data, ExternalArrayWeakCallback);
|
| - persistent_buffer.MarkIndependent();
|
| + persistent_buffer.MakeWeak(isolate, data, ExternalArrayWeakCallback);
|
| + persistent_buffer.MarkIndependent(isolate);
|
| V8::AdjustAmountOfExternalAllocatedMemory(length);
|
|
|
| buffer->SetIndexedPropertiesToExternalArrayData(
|
| @@ -1565,7 +1566,7 @@ void ShellThread::Run() {
|
| Shell::ExecuteString(str, String::New(filename), false, false);
|
| }
|
|
|
| - thread_context.Dispose();
|
| + thread_context.Dispose(thread_context->GetIsolate());
|
| ptr = next_line;
|
| }
|
| }
|
| @@ -1649,7 +1650,7 @@ void SourceGroup::ExecuteInThread() {
|
| Context::Scope cscope(context);
|
| Execute(isolate);
|
| }
|
| - context.Dispose();
|
| + context.Dispose(isolate);
|
| if (Shell::options.send_idle_notification) {
|
| const int kLongIdlePauseInMs = 1000;
|
| V8::ContextDisposedNotification();
|
| @@ -1858,7 +1859,7 @@ int Shell::RunMain(Isolate* isolate, int argc, char* argv[]) {
|
| options.isolate_sources[0].Execute(isolate);
|
| }
|
| if (!options.last_run) {
|
| - context.Dispose();
|
| + context.Dispose(isolate);
|
| if (options.send_idle_notification) {
|
| const int kLongIdlePauseInMs = 1000;
|
| V8::ContextDisposedNotification();
|
|
|