Fixed service isolate not being initialized correctly due to bad name (flutter/engine#8251)

* Fixed service isolate not being initialized correctly due to bad name

The name for the service isolate was being set to the empty string,
causing the microtask loop to not be run on the service isolate leading
to the service hanging on the first 'await'. See
https://dart-review.googlesource.com/c/sdk/+/97107 for revert due to
this issue.

* Removed unnecessary params from DartCreateAndStartServiceIsolate
This commit is contained in:
Ben Konyi 2019-03-26 14:36:51 -07:00 committed by GitHub
parent 90b0527105
commit af75dc6f01
2 changed files with 14 additions and 23 deletions

View File

@ -487,8 +487,6 @@ bool DartIsolate::Shutdown() {
}
Dart_Isolate DartIsolate::DartCreateAndStartServiceIsolate(
const char* advisory_script_uri,
const char* advisory_script_entrypoint,
const char* package_root,
const char* package_config,
Dart_IsolateFlags* flags,
@ -517,19 +515,16 @@ Dart_Isolate DartIsolate::DartCreateAndStartServiceIsolate(
std::weak_ptr<DartIsolate> weak_service_isolate =
DartIsolate::CreateRootIsolate(
vm.get(), // vm
vm->GetIsolateSnapshot(), // isolate snapshot
vm->GetSharedSnapshot(), // shared snapshot
null_task_runners, // task runners
nullptr, // window
{}, // snapshot delegate
{}, // IO Manager
advisory_script_uri == nullptr ? ""
: advisory_script_uri, // script uri
advisory_script_entrypoint == nullptr
? ""
: advisory_script_entrypoint, // script entrypoint
flags // flags
vm.get(), // vm
vm->GetIsolateSnapshot(), // isolate snapshot
vm->GetSharedSnapshot(), // shared snapshot
null_task_runners, // task runners
nullptr, // window
{}, // snapshot delegate
{}, // IO Manager
DART_VM_SERVICE_ISOLATE_NAME, // script uri
DART_VM_SERVICE_ISOLATE_NAME, // script entrypoint
flags // flags
);
std::shared_ptr<DartIsolate> service_isolate = weak_service_isolate.lock();
@ -573,12 +568,10 @@ Dart_Isolate DartIsolate::DartIsolateCreateCallback(
// DART_VM_SERVICE_ISOLATE_NAME. In such cases, we just create the service
// isolate like normal but dont hold a reference to it at all. We also start
// this isolate since we will never again reference it from the engine.
return DartCreateAndStartServiceIsolate(advisory_script_uri, //
advisory_script_entrypoint, //
package_root, //
package_config, //
flags, //
error //
return DartCreateAndStartServiceIsolate(package_root, //
package_config, //
flags, //
error //
);
}

View File

@ -138,8 +138,6 @@ class DartIsolate : public UIDartState {
char** error);
static Dart_Isolate DartCreateAndStartServiceIsolate(
const char* advisory_script_uri,
const char* advisory_script_entrypoint,
const char* package_root,
const char* package_config,
Dart_IsolateFlags* flags,