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 | 4 |
5 library fasta; | 5 library fasta; |
6 | 6 |
7 import 'dart:async' show Future; | 7 import 'dart:async' show Future; |
8 | 8 |
9 import 'dart:convert' show JSON; | 9 import 'dart:convert' show JSON; |
10 | 10 |
(...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
112 | 112 |
113 CompileTask(this.c, this.ticker); | 113 CompileTask(this.c, this.ticker); |
114 | 114 |
115 DillTarget createDillTarget(UriTranslator uriTranslator) { | 115 DillTarget createDillTarget(UriTranslator uriTranslator) { |
116 return new DillTarget(ticker, uriTranslator, c.options.target); | 116 return new DillTarget(ticker, uriTranslator, c.options.target); |
117 } | 117 } |
118 | 118 |
119 KernelTarget createKernelTarget( | 119 KernelTarget createKernelTarget( |
120 DillTarget dillTarget, UriTranslator uriTranslator, bool strongMode) { | 120 DillTarget dillTarget, UriTranslator uriTranslator, bool strongMode) { |
121 return new KernelTarget( | 121 return new KernelTarget( |
122 c.fileSystem, dillTarget, uriTranslator, c.uriToSource); | 122 c.fileSystem, false, dillTarget, uriTranslator, c.uriToSource); |
123 } | 123 } |
124 | 124 |
125 Future<KernelTarget> buildOutline([Uri output]) async { | 125 Future<KernelTarget> buildOutline([Uri output]) async { |
126 UriTranslator uriTranslator = await UriTranslatorImpl | 126 UriTranslator uriTranslator = await UriTranslatorImpl |
127 .parse(c.fileSystem, c.options.sdk, packages: c.options.packages); | 127 .parse(c.fileSystem, c.options.sdk, packages: c.options.packages); |
128 ticker.logMs("Read packages file"); | 128 ticker.logMs("Read packages file"); |
129 DillTarget dillTarget = createDillTarget(uriTranslator); | 129 DillTarget dillTarget = createDillTarget(uriTranslator); |
130 KernelTarget kernelTarget = | 130 KernelTarget kernelTarget = |
131 createKernelTarget(dillTarget, uriTranslator, c.options.strongMode); | 131 createKernelTarget(dillTarget, uriTranslator, c.options.strongMode); |
132 if (c.options.strongMode) { | 132 if (c.options.strongMode) { |
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
208 } | 208 } |
209 c.options.validate(); | 209 c.options.validate(); |
210 sdk ??= c.options.sdk; | 210 sdk ??= c.options.sdk; |
211 | 211 |
212 UriTranslator uriTranslator = await UriTranslatorImpl | 212 UriTranslator uriTranslator = await UriTranslatorImpl |
213 .parse(c.fileSystem, sdk, packages: c.options.packages); | 213 .parse(c.fileSystem, sdk, packages: c.options.packages); |
214 ticker.logMs("Read packages file"); | 214 ticker.logMs("Read packages file"); |
215 DillTarget dillTarget = | 215 DillTarget dillTarget = |
216 new DillTarget(ticker, uriTranslator, c.options.target); | 216 new DillTarget(ticker, uriTranslator, c.options.target); |
217 if (platform != null) _appendDillForUri(dillTarget, platform); | 217 if (platform != null) _appendDillForUri(dillTarget, platform); |
218 KernelTarget kernelTarget = new KernelTarget( | 218 KernelTarget kernelTarget = new KernelTarget(PhysicalFileSystem.instance, |
219 PhysicalFileSystem.instance, dillTarget, uriTranslator, c.uriToSource); | 219 false, dillTarget, uriTranslator, c.uriToSource); |
220 | 220 |
221 kernelTarget.read(script); | 221 kernelTarget.read(script); |
222 await dillTarget.buildOutlines(); | 222 await dillTarget.buildOutlines(); |
223 await kernelTarget.loader.buildOutlines(); | 223 await kernelTarget.loader.buildOutlines(); |
224 return await kernelTarget.loader.getDependencies(); | 224 return await kernelTarget.loader.getDependencies(); |
225 }); | 225 }); |
226 } | 226 } |
227 | 227 |
228 /// Load the [Program] from the given [uri] and append its libraries | 228 /// Load the [Program] from the given [uri] and append its libraries |
229 /// to the [dillTarget]. | 229 /// to the [dillTarget]. |
230 void _appendDillForUri(DillTarget dillTarget, Uri uri) { | 230 void _appendDillForUri(DillTarget dillTarget, Uri uri) { |
231 var bytes = new File.fromUri(uri).readAsBytesSync(); | 231 var bytes = new File.fromUri(uri).readAsBytesSync(); |
232 var platformProgram = loadProgramFromBytes(bytes); | 232 var platformProgram = loadProgramFromBytes(bytes); |
233 platformProgram.unbindCanonicalNames(); | 233 platformProgram.unbindCanonicalNames(); |
234 dillTarget.loader.appendLibraries(platformProgram); | 234 dillTarget.loader.appendLibraries(platformProgram); |
235 } | 235 } |
236 | 236 |
237 // TODO(ahe): https://github.com/dart-lang/sdk/issues/28316 | 237 // TODO(ahe): https://github.com/dart-lang/sdk/issues/28316 |
238 class ByteSink implements Sink<List<int>> { | 238 class ByteSink implements Sink<List<int>> { |
239 final BytesBuilder builder = new BytesBuilder(); | 239 final BytesBuilder builder = new BytesBuilder(); |
240 | 240 |
241 void add(List<int> data) { | 241 void add(List<int> data) { |
242 builder.add(data); | 242 builder.add(data); |
243 } | 243 } |
244 | 244 |
245 void close() { | 245 void close() { |
246 // Nothing to do. | 246 // Nothing to do. |
247 } | 247 } |
248 } | 248 } |
OLD | NEW |