| Index: runtime/vm/dart_entry.cc
|
| diff --git a/runtime/vm/dart_entry.cc b/runtime/vm/dart_entry.cc
|
| index 82055bb7b89f2531f6e63add2ff149d3fee6b3e5..c0a0ef9afb20ba3d6e8639dc3a3753d72a2c7614 100644
|
| --- a/runtime/vm/dart_entry.cc
|
| +++ b/runtime/vm/dart_entry.cc
|
| @@ -229,9 +229,10 @@ RawObject* DartEntry::InvokeNoSuchMethod(const Instance& receiver,
|
| if (function.IsNull()) {
|
| ASSERT(!FLAG_lazy_dispatchers);
|
| // If noSuchMethod(invocation) is not found, call Object::noSuchMethod.
|
| - Isolate* isolate = Isolate::Current();
|
| + Thread* thread = Thread::Current();
|
| function ^= Resolver::ResolveDynamicForReceiverClass(
|
| - Class::Handle(isolate, isolate->object_store()->object_class()),
|
| + Class::Handle(thread->zone(),
|
| + thread->isolate()->object_store()->object_class()),
|
| Symbols::NoSuchMethod(),
|
| args_desc);
|
| }
|
| @@ -483,10 +484,9 @@ RawObject* DartLibraryCalls::Equals(const Instance& left,
|
|
|
|
|
| RawObject* DartLibraryCalls::LookupHandler(Dart_Port port_id) {
|
| - Isolate* isolate = Isolate::Current();
|
| - Function& function =
|
| - Function::Handle(isolate,
|
| - isolate->object_store()->lookup_port_handler());
|
| + Thread* thread = Thread::Current();
|
| + Function& function = Function::Handle(thread->zone(),
|
| + thread->isolate()->object_store()->lookup_port_handler());
|
| const int kNumArguments = 1;
|
| if (function.IsNull()) {
|
| Library& isolate_lib = Library::Handle(Library::IsolateLibrary());
|
| @@ -501,7 +501,7 @@ RawObject* DartLibraryCalls::LookupHandler(Dart_Port port_id) {
|
| kNumArguments,
|
| Object::empty_array());
|
| ASSERT(!function.IsNull());
|
| - isolate->object_store()->set_lookup_port_handler(function);
|
| + thread->isolate()->object_store()->set_lookup_port_handler(function);
|
| }
|
| const Array& args = Array::Handle(Array::New(kNumArguments));
|
| args.SetAt(0, Integer::Handle(Integer::New(port_id)));
|
| @@ -513,16 +513,18 @@ RawObject* DartLibraryCalls::LookupHandler(Dart_Port port_id) {
|
|
|
| RawObject* DartLibraryCalls::HandleMessage(const Object& handler,
|
| const Instance& message) {
|
| - Isolate* isolate = Isolate::Current();
|
| - Function& function = Function::Handle(isolate,
|
| + Thread* thread = Thread::Current();
|
| + Zone* zone = thread->zone();
|
| + Isolate* isolate = thread->isolate();
|
| + Function& function = Function::Handle(zone,
|
| isolate->object_store()->handle_message_function());
|
| const int kNumArguments = 2;
|
| if (function.IsNull()) {
|
| - Library& isolate_lib = Library::Handle(isolate, Library::IsolateLibrary());
|
| + Library& isolate_lib = Library::Handle(zone, Library::IsolateLibrary());
|
| ASSERT(!isolate_lib.IsNull());
|
| - const String& class_name = String::Handle(isolate,
|
| + const String& class_name = String::Handle(zone,
|
| isolate_lib.PrivateName(Symbols::_RawReceivePortImpl()));
|
| - const String& function_name = String::Handle(isolate,
|
| + const String& function_name = String::Handle(zone,
|
| isolate_lib.PrivateName(Symbols::_handleMessage()));
|
| function = Resolver::ResolveStatic(isolate_lib,
|
| class_name,
|
| @@ -532,7 +534,7 @@ RawObject* DartLibraryCalls::HandleMessage(const Object& handler,
|
| ASSERT(!function.IsNull());
|
| isolate->object_store()->set_handle_message_function(function);
|
| }
|
| - const Array& args = Array::Handle(isolate, Array::New(kNumArguments));
|
| + const Array& args = Array::Handle(zone, Array::New(kNumArguments));
|
| args.SetAt(0, handler);
|
| args.SetAt(1, message);
|
| if (isolate->debugger()->IsStepping()) {
|
| @@ -541,7 +543,7 @@ RawObject* DartLibraryCalls::HandleMessage(const Object& handler,
|
| // at the first location the user is interested in.
|
| isolate->debugger()->SetSingleStep();
|
| }
|
| - const Object& result = Object::Handle(isolate,
|
| + const Object& result = Object::Handle(zone,
|
| DartEntry::InvokeFunction(function, args));
|
| ASSERT(result.IsNull() || result.IsError());
|
| return result.raw();
|
| @@ -549,13 +551,13 @@ RawObject* DartLibraryCalls::HandleMessage(const Object& handler,
|
|
|
|
|
| RawObject* DartLibraryCalls::DrainMicrotaskQueue() {
|
| - Isolate* isolate = Isolate::Current();
|
| - Library& isolate_lib = Library::Handle(isolate, Library::IsolateLibrary());
|
| + Zone* zone = Thread::Current()->zone();
|
| + Library& isolate_lib = Library::Handle(zone, Library::IsolateLibrary());
|
| ASSERT(!isolate_lib.IsNull());
|
| - Function& function = Function::Handle(isolate,
|
| + Function& function = Function::Handle(zone,
|
| isolate_lib.LookupFunctionAllowPrivate(
|
| Symbols::_runPendingImmediateCallback()));
|
| - const Object& result = Object::Handle(isolate,
|
| + const Object& result = Object::Handle(zone,
|
| DartEntry::InvokeFunction(function, Object::empty_array()));
|
| ASSERT(result.IsNull() || result.IsError());
|
| return result.raw();
|
|
|