OLD | NEW |
---|---|
1 // Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file |
2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
4 library runtime.tools.kernel_service; | 4 library runtime.tools.kernel_service; |
5 | 5 |
6 // This is an interface to the Dart Kernel parser and Kernel binary generator. | 6 // This is an interface to the Dart Kernel parser and Kernel binary generator. |
7 // | 7 // |
8 // It is used by the kernel-isolate to load Dart source code and generate | 8 // It is used by the kernel-isolate to load Dart source code and generate |
9 // Kernel binary format. | 9 // Kernel binary format. |
10 // | 10 // |
(...skipping 187 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
198 } else { | 198 } else { |
199 // See loader.cc for the code that handles these replies. | 199 // See loader.cc for the code that handles these replies. |
200 if (result is CompilationOk) { | 200 if (result is CompilationOk) { |
201 port.send([tag, inputFileUrl, inputFileUrl, null, result]); | 201 port.send([tag, inputFileUrl, inputFileUrl, null, result]); |
202 } else { | 202 } else { |
203 port.send([-tag, inputFileUrl, inputFileUrl, null, result.errorString]); | 203 port.send([-tag, inputFileUrl, inputFileUrl, null, result.errorString]); |
204 } | 204 } |
205 } | 205 } |
206 } | 206 } |
207 | 207 |
208 main() => new RawReceivePort()..handler = _processLoadRequest; | 208 // This entry point is used when running in the kernel isolate. |
209 start() => new RawReceivePort()..handler = _processLoadRequest; | |
210 | |
211 // This entry point is used when creating an app snapshot. The argument provides | |
212 // a script to compile to warm-up generated code. | |
213 main(args) { | |
214 // TODO(28532): Enable on Windows. | |
215 if (Platform.isWindows) return; | |
216 | |
217 var tag = 1; | |
218 var scriptUri = args[0]; | |
219 var responsePort = new RawReceivePort(); | |
220 responsePort.handler = (response) { | |
221 if (response[0] == tag) { | |
222 // Success. | |
223 responsePort.close(); | |
224 } else if (response[0] == -tag) { | |
225 // Compilation error. | |
226 throw response[4]; | |
227 } else { | |
228 throw "Unexpected response: $response"; | |
229 } | |
230 }; | |
231 var request = [tag, responsePort.sendPort, scriptUri]; | |
232 _processLoadRequest(request); | |
233 } | |
209 | 234 |
210 // This duplicates functionality from the Loader which we can't easily | 235 // This duplicates functionality from the Loader which we can't easily |
211 // access from here. | 236 // access from here. |
212 Uri _findPackagesFile(Uri base) async { | 237 Uri _findPackagesFile(Uri base) async { |
213 var dir = new File.fromUri(base).parent; | 238 var dir = new File.fromUri(base).parent; |
214 while (true) { | 239 while (true) { |
215 final packagesFile = dir.uri.resolve(".packages"); | 240 final packagesFile = dir.uri.resolve(".packages"); |
216 if (await new File.fromUri(packagesFile).exists()) { | 241 if (await new File.fromUri(packagesFile).exists()) { |
217 return packagesFile; | 242 return packagesFile; |
218 } | 243 } |
219 if (dir.parent == dir) { | 244 if (dir.parent.path == dir.path) { |
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
| |
220 break; | 245 break; |
221 } | 246 } |
222 dir = dir.parent; | 247 dir = dir.parent; |
223 } | 248 } |
224 return null; | 249 return null; |
225 } | 250 } |
OLD | NEW |