Index: utils/kernel-service/kernel-service.dart |
diff --git a/runtime/tools/kernel-service.dart b/utils/kernel-service/kernel-service.dart |
similarity index 88% |
rename from runtime/tools/kernel-service.dart |
rename to utils/kernel-service/kernel-service.dart |
index b1b441db2ed5e7d1f6efe595150f09d973bb1c93..2db4d32566e9f190adcdaf5ab738a0986ec90648 100644 |
--- a/runtime/tools/kernel-service.dart |
+++ b/utils/kernel-service/kernel-service.dart |
@@ -205,7 +205,32 @@ Future _processLoadRequest(request) async { |
} |
} |
-main() => new RawReceivePort()..handler = _processLoadRequest; |
+// This entry point is used when running in the kernel isolate. |
+start() => new RawReceivePort()..handler = _processLoadRequest; |
+ |
+// This entry point is used when creating an app snapshot. The argument provides |
+// a script to compile to warm-up generated code. |
+main(args) { |
+ // TODO(28532): Enable on Windows. |
+ if (Platform.isWindows) return; |
+ |
+ var tag = 1; |
+ var scriptUri = args[0]; |
+ var responsePort = new RawReceivePort(); |
+ responsePort.handler = (response) { |
+ if (response[0] == tag) { |
+ // Success. |
+ responsePort.close(); |
+ } else if (response[0] == -tag) { |
+ // Compilation error. |
+ throw response[4]; |
+ } else { |
+ throw "Unexpected response: $response"; |
+ } |
+ }; |
+ var request = [tag, responsePort.sendPort, scriptUri]; |
+ _processLoadRequest(request); |
+} |
// This duplicates functionality from the Loader which we can't easily |
// access from here. |
@@ -216,7 +241,7 @@ Uri _findPackagesFile(Uri base) async { |
if (await new File.fromUri(packagesFile).exists()) { |
return packagesFile; |
} |
- if (dir.parent == dir) { |
rmacnak
2017/01/31 01:53:37
This is always true. dart.io.Directory are only eq
Vyacheslav Egorov (Google)
2017/01/31 06:18:02
This code was copied from the Loader code so it ha
Vyacheslav Egorov (Google)
2017/01/31 07:32:22
Ah, disregard this comment. Loader does not have t
|
+ if (dir.parent.path == dir.path) { |
break; |
} |
dir = dir.parent; |