Chromium Code Reviews| 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; |