Ensure isolates have a root library so createMirrorSystem() and spawnUri() are happy.

https://github.com/domokit/mojo/issues/98

R=eseidel@chromium.org

Review URL: https://codereview.chromium.org/1088263004
This commit is contained in:
Ryan Macnak 2015-04-16 15:49:11 -07:00
parent 11315b5314
commit a6ffc52bea
3 changed files with 23 additions and 0 deletions

View File

@ -204,6 +204,10 @@ static Dart_Isolate IsolateCreateCallback(const char* script_uri,
DartApiScope apiScope;
Builtin::SetNativeResolver(Builtin::kBuiltinLibrary);
Builtin::SetNativeResolver(Builtin::kMojoInternalLibrary);
// Ensure the isolate has a root library.
Dart_LoadScript(Dart_NewStringFromCString("dart:empty"),
Dart_NewStringFromCString(""), 0, 0);
}
Dart_ExitIsolate();
@ -273,6 +277,10 @@ void DartController::CreateIsolateFor(Document* document) {
{
DartApiScope apiScope;
// Ensure the isolate has a root library.
Dart_LoadScript(Dart_NewStringFromCString("dart:empty"),
Dart_NewStringFromCString(""), 0, 0);
Builtin::SetNativeResolver(Builtin::kBuiltinLibrary);
Builtin::SetNativeResolver(Builtin::kMojoInternalLibrary);
BuiltinNatives::Init();

View File

@ -0,0 +1 @@
PASS

View File

@ -0,0 +1,14 @@
<script>
import "dart:mirrors";
import "dart:sky.internals" as internals;
// Regression test for the embedder not setting up the root library.
// Used to crash.
void main() {
if (currentMirrorSystem().isolate.rootLibrary == null) {
throw "Missing root library";
}
internals.notifyTestComplete("PASS");
}
</script>>