| 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 |