| 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 94 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 105 } | 105 } |
| 106 } | 106 } |
| 107 | 107 |
| 108 class CompileTask { | 108 class CompileTask { |
| 109 final CompilerContext c; | 109 final CompilerContext c; |
| 110 final Ticker ticker; | 110 final Ticker ticker; |
| 111 | 111 |
| 112 CompileTask(this.c, this.ticker); | 112 CompileTask(this.c, this.ticker); |
| 113 | 113 |
| 114 DillTarget createDillTarget(TranslateUri uriTranslator) { | 114 DillTarget createDillTarget(TranslateUri uriTranslator) { |
| 115 return new DillTarget(ticker, uriTranslator); | 115 return new DillTarget(null, ticker, uriTranslator); |
| 116 } | 116 } |
| 117 | 117 |
| 118 KernelTarget createKernelTarget( | 118 KernelTarget createKernelTarget( |
| 119 DillTarget dillTarget, TranslateUri uriTranslator, bool strongMode) { | 119 DillTarget dillTarget, TranslateUri uriTranslator, bool strongMode) { |
| 120 return new KernelTarget( | 120 return new KernelTarget( |
| 121 c.fileSystem, dillTarget, uriTranslator, strongMode, c.uriToSource); | 121 c.fileSystem, dillTarget, uriTranslator, strongMode, c.uriToSource); |
| 122 } | 122 } |
| 123 | 123 |
| 124 Future<KernelTarget> buildOutline([Uri output]) async { | 124 Future<KernelTarget> buildOutline([Uri output]) async { |
| 125 TranslateUri uriTranslator = await TranslateUri.parse( | 125 TranslateUri uriTranslator = await TranslateUri.parse( |
| (...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 172 if (!await new Directory.fromUri(patchedSdk).exists()) { | 172 if (!await new Directory.fromUri(patchedSdk).exists()) { |
| 173 return new CompilationResult.error( | 173 return new CompilationResult.error( |
| 174 formatUnexpected(patchedSdk, -1, "Patched sdk directory not found.")); | 174 formatUnexpected(patchedSdk, -1, "Patched sdk directory not found.")); |
| 175 } | 175 } |
| 176 | 176 |
| 177 Program program; | 177 Program program; |
| 178 try { | 178 try { |
| 179 TranslateUri uriTranslator = | 179 TranslateUri uriTranslator = |
| 180 await TranslateUri.parse(PhysicalFileSystem.instance, null, packages); | 180 await TranslateUri.parse(PhysicalFileSystem.instance, null, packages); |
| 181 final Ticker ticker = new Ticker(isVerbose: verbose); | 181 final Ticker ticker = new Ticker(isVerbose: verbose); |
| 182 final DillTarget dillTarget = new DillTarget(ticker, uriTranslator); | 182 final DillTarget dillTarget = new DillTarget(null, ticker, uriTranslator); |
| 183 _appendDillForUri(dillTarget, patchedSdk.resolve('platform.dill')); | 183 _appendDillForUri(dillTarget, patchedSdk.resolve('platform.dill')); |
| 184 final KernelTarget kernelTarget = new KernelTarget( | 184 final KernelTarget kernelTarget = new KernelTarget( |
| 185 PhysicalFileSystem.instance, dillTarget, uriTranslator, strongMode); | 185 PhysicalFileSystem.instance, dillTarget, uriTranslator, strongMode); |
| 186 kernelTarget.read(fileName); | 186 kernelTarget.read(fileName); |
| 187 await dillTarget.writeOutline(null); | 187 await dillTarget.writeOutline(null); |
| 188 program = await kernelTarget.writeOutline(null); | 188 program = await kernelTarget.writeOutline(null); |
| 189 program = await kernelTarget.writeProgram(null); | 189 program = await kernelTarget.writeProgram(null); |
| 190 if (kernelTarget.errors.isNotEmpty) { | 190 if (kernelTarget.errors.isNotEmpty) { |
| 191 return new CompilationResult.errors(kernelTarget.errors | 191 return new CompilationResult.errors(kernelTarget.errors |
| 192 .map((err) => err.toString()) | 192 .map((err) => err.toString()) |
| (...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 243 await CompilerCommandLine.withGlobalOptions("", [""], | 243 await CompilerCommandLine.withGlobalOptions("", [""], |
| 244 (CompilerContext c) async { | 244 (CompilerContext c) async { |
| 245 c.options.options["--packages"] = packages; | 245 c.options.options["--packages"] = packages; |
| 246 if (verbose) { | 246 if (verbose) { |
| 247 c.options.options["--verbose"] = true; | 247 c.options.options["--verbose"] = true; |
| 248 } | 248 } |
| 249 | 249 |
| 250 TranslateUri uriTranslator = await TranslateUri.parse( | 250 TranslateUri uriTranslator = await TranslateUri.parse( |
| 251 c.fileSystem, c.options.sdk, c.options.packages); | 251 c.fileSystem, c.options.sdk, c.options.packages); |
| 252 ticker.logMs("Read packages file"); | 252 ticker.logMs("Read packages file"); |
| 253 DillTarget dillTarget = new DillTarget(ticker, uriTranslator); | 253 DillTarget dillTarget = new DillTarget(null, ticker, uriTranslator); |
| 254 _appendDillForUri(dillTarget, platform); | 254 _appendDillForUri(dillTarget, platform); |
| 255 KernelTarget kernelTarget = new KernelTarget(PhysicalFileSystem.instance, | 255 KernelTarget kernelTarget = new KernelTarget(PhysicalFileSystem.instance, |
| 256 dillTarget, uriTranslator, false, c.uriToSource); | 256 dillTarget, uriTranslator, false, c.uriToSource); |
| 257 | 257 |
| 258 kernelTarget.read(script); | 258 kernelTarget.read(script); |
| 259 await dillTarget.writeOutline(null); | 259 await dillTarget.writeOutline(null); |
| 260 await kernelTarget.loader.buildOutlines(); | 260 await kernelTarget.loader.buildOutlines(); |
| 261 await kernelTarget.writeDepsFile(output, depsFile, | 261 await kernelTarget.writeDepsFile(output, depsFile, |
| 262 extraDependencies: extraDependencies); | 262 extraDependencies: extraDependencies); |
| 263 }); | 263 }); |
| 264 } | 264 } |
| 265 | 265 |
| 266 /// Load the [Program] from the given [uri] and append its libraries | 266 /// Load the [Program] from the given [uri] and append its libraries |
| 267 /// to the [dillTarget]. | 267 /// to the [dillTarget]. |
| 268 void _appendDillForUri(DillTarget dillTarget, Uri uri) { | 268 void _appendDillForUri(DillTarget dillTarget, Uri uri) { |
| 269 var bytes = new File.fromUri(uri).readAsBytesSync(); | 269 var bytes = new File.fromUri(uri).readAsBytesSync(); |
| 270 var platformProgram = loadProgramFromBytes(bytes); | 270 var platformProgram = loadProgramFromBytes(bytes); |
| 271 platformProgram.unbindCanonicalNames(); |
| 271 dillTarget.loader.appendLibraries(platformProgram); | 272 dillTarget.loader.appendLibraries(platformProgram); |
| 272 } | 273 } |
| 273 | 274 |
| 274 // TODO(ahe): https://github.com/dart-lang/sdk/issues/28316 | 275 // TODO(ahe): https://github.com/dart-lang/sdk/issues/28316 |
| 275 class ByteSink implements Sink<List<int>> { | 276 class ByteSink implements Sink<List<int>> { |
| 276 final BytesBuilder builder = new BytesBuilder(); | 277 final BytesBuilder builder = new BytesBuilder(); |
| 277 | 278 |
| 278 void add(List<int> data) { | 279 void add(List<int> data) { |
| 279 builder.add(data); | 280 builder.add(data); |
| 280 } | 281 } |
| 281 | 282 |
| 282 void close() { | 283 void close() { |
| 283 // Nothing to do. | 284 // Nothing to do. |
| 284 } | 285 } |
| 285 } | 286 } |
| OLD | NEW |