| Index: runtime/vm/dart.cc
|
| diff --git a/runtime/vm/dart.cc b/runtime/vm/dart.cc
|
| index 70b0504383e795637d3b4f81cad98cb712bc5391..4389c4ed6c1894e2b32225f1d849420f60d1ad10 100644
|
| --- a/runtime/vm/dart.cc
|
| +++ b/runtime/vm/dart.cc
|
| @@ -113,6 +113,8 @@ const char* Dart::InitOnce(const uint8_t* vm_isolate_snapshot,
|
| ASSERT(thread_pool_ == NULL);
|
| thread_pool_ = new ThreadPool();
|
| {
|
| + Thread* thread = Thread::Current();
|
| + ASSERT(thread != NULL);
|
| ASSERT(vm_isolate_ == NULL);
|
| ASSERT(Flags::Initialized());
|
| const bool is_vm_isolate = true;
|
| @@ -122,9 +124,12 @@ const char* Dart::InitOnce(const uint8_t* vm_isolate_snapshot,
|
| Dart_IsolateFlags api_flags;
|
| vm_flags.CopyTo(&api_flags);
|
| vm_isolate_ = Isolate::Init("vm-isolate", api_flags, is_vm_isolate);
|
| + // Verify assumptions about executing in the VM isolate.
|
| + ASSERT(vm_isolate_ == Isolate::Current());
|
| + ASSERT(vm_isolate_ == Thread::Current()->isolate());
|
|
|
| StackZone zone(vm_isolate_);
|
| - HandleScope handle_scope(vm_isolate_);
|
| + HandleScope handle_scope(thread);
|
| Object::InitNull(vm_isolate_);
|
| ObjectStore::Init(vm_isolate_);
|
| TargetCPUFeatures::InitOnce();
|
| @@ -142,7 +147,7 @@ const char* Dart::InitOnce(const uint8_t* vm_isolate_snapshot,
|
| ASSERT(snapshot->kind() == Snapshot::kFull);
|
| VmIsolateSnapshotReader reader(snapshot->content(),
|
| snapshot->length(),
|
| - zone.GetZone());
|
| + thread);
|
| const Error& error = Error::Handle(reader.ReadVmIsolateSnapshot());
|
| if (!error.IsNull()) {
|
| return error.ToCString();
|
| @@ -251,7 +256,7 @@ RawError* Dart::InitializeIsolate(const uint8_t* snapshot_buffer, void* data) {
|
|
|
| ASSERT(isolate != NULL);
|
| StackZone zone(isolate);
|
| - HandleScope handle_scope(isolate);
|
| + HandleScope handle_scope(thread);
|
| {
|
| TimelineDurationScope tds(isolate,
|
| isolate->GetIsolateStream(),
|
| @@ -284,8 +289,7 @@ RawError* Dart::InitializeIsolate(const uint8_t* snapshot_buffer, void* data) {
|
| }
|
| IsolateSnapshotReader reader(snapshot->content(),
|
| snapshot->length(),
|
| - isolate,
|
| - zone.GetZone());
|
| + thread);
|
| const Error& error = Error::Handle(reader.ReadFullSnapshot());
|
| if (!error.IsNull()) {
|
| return error.raw();
|
|
|