| OLD | NEW | 
|---|
| 1 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file | 1 // Copyright (c) 2012, 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 dart2js.library_loader; | 5 library dart2js.library_loader; | 
| 6 | 6 | 
| 7 import 'dart:async'; | 7 import 'dart:async'; | 
| 8 import 'dart:io' show Platform; |  | 
| 9 | 8 | 
| 10 import 'package:front_end/front_end.dart' as fe; | 9 import 'package:front_end/front_end.dart' as fe; | 
| 11 import 'package:kernel/ast.dart' as ir; | 10 import 'package:kernel/ast.dart' as ir; | 
| 12 import 'package:kernel/binary/ast_from_binary.dart' show BinaryBuilder; | 11 import 'package:kernel/binary/ast_from_binary.dart' show BinaryBuilder; | 
| 13 import 'package:kernel/kernel.dart' hide LibraryDependency, Combinator; | 12 import 'package:kernel/kernel.dart' hide LibraryDependency, Combinator; | 
| 14 import 'package:kernel/target/targets.dart'; | 13 import 'package:kernel/target/targets.dart'; | 
| 15 | 14 | 
| 16 import '../compiler_new.dart' as api; | 15 import '../compiler_new.dart' as api; | 
| 17 import 'kernel/front_end_adapter.dart'; | 16 import 'kernel/front_end_adapter.dart'; | 
| 18 import 'kernel/dart2js_target.dart' show Dart2jsTarget; | 17 import 'kernel/dart2js_target.dart' show Dart2jsTarget; | 
| (...skipping 798 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 817 | 816 | 
| 818 /// A loader that builds a kernel IR representation of the program (or set of | 817 /// A loader that builds a kernel IR representation of the program (or set of | 
| 819 /// libraries). | 818 /// libraries). | 
| 820 /// | 819 /// | 
| 821 /// It supports loading both .dart source files or pre-compiled .dill files. | 820 /// It supports loading both .dart source files or pre-compiled .dill files. | 
| 822 /// When given .dart source files, it invokes the shared frontend | 821 /// When given .dart source files, it invokes the shared frontend | 
| 823 /// (`package:front_end`) to produce the corresponding kernel IR representation. | 822 /// (`package:front_end`) to produce the corresponding kernel IR representation. | 
| 824 // TODO(sigmund): move this class to a new file under src/kernel/. | 823 // TODO(sigmund): move this class to a new file under src/kernel/. | 
| 825 class KernelLibraryLoaderTask extends CompilerTask | 824 class KernelLibraryLoaderTask extends CompilerTask | 
| 826     implements LibraryLoaderTask { | 825     implements LibraryLoaderTask { | 
|  | 826   final Uri sdkRoot; | 
|  | 827 | 
| 827   final DiagnosticReporter reporter; | 828   final DiagnosticReporter reporter; | 
| 828 | 829 | 
| 829   final api.CompilerInput compilerInput; | 830   final api.CompilerInput compilerInput; | 
| 830 | 831 | 
| 831   /// Holds the mapping of Kernel IR to KElements that is constructed as a | 832   /// Holds the mapping of Kernel IR to KElements that is constructed as a | 
| 832   /// result of loading a program. | 833   /// result of loading a program. | 
| 833   final KernelToElementMapForImpactImpl _elementMap; | 834   final KernelToElementMapForImpactImpl _elementMap; | 
| 834 | 835 | 
| 835   List<LibraryEntity> _allLoadedLibraries; | 836   List<LibraryEntity> _allLoadedLibraries; | 
| 836 | 837 | 
| 837   KernelLibraryLoaderTask( | 838   KernelLibraryLoaderTask(this.sdkRoot, this._elementMap, this.compilerInput, | 
| 838       this._elementMap, this.compilerInput, this.reporter, Measurer measurer) | 839       this.reporter, Measurer measurer) | 
| 839       : _allLoadedLibraries = new List<LibraryEntity>(), | 840       : _allLoadedLibraries = new List<LibraryEntity>(), | 
| 840         super(measurer); | 841         super(measurer); | 
| 841 | 842 | 
| 842   /// Loads an entire Kernel [Program] from a file on disk (note, not just a | 843   /// Loads an entire Kernel [Program] from a file on disk (note, not just a | 
| 843   /// library, so this name is actually a bit of a misnomer). | 844   /// library, so this name is actually a bit of a misnomer). | 
| 844   // TODO(efortuna): Rename this once the Element library loader class goes | 845   // TODO(efortuna): Rename this once the Element library loader class goes | 
| 845   // away. | 846   // away. | 
| 846   Future<LoadedLibraries> loadLibrary(Uri resolvedUri, | 847   Future<LoadedLibraries> loadLibrary(Uri resolvedUri, | 
| 847       {bool skipFileWithPartOfTag: false}) { | 848       {bool skipFileWithPartOfTag: false}) { | 
| 848     return measure(() async { | 849     return measure(() async { | 
| 849       var isDill = resolvedUri.path.endsWith('.dill'); | 850       var isDill = resolvedUri.path.endsWith('.dill'); | 
| 850       ir.Program program; | 851       ir.Program program; | 
| 851       if (isDill) { | 852       if (isDill) { | 
| 852         api.Input input = await compilerInput.readFromUri(resolvedUri, | 853         api.Input input = await compilerInput.readFromUri(resolvedUri, | 
| 853             inputKind: api.InputKind.binary); | 854             inputKind: api.InputKind.binary); | 
| 854         program = new ir.Program(); | 855         program = new ir.Program(); | 
| 855         new BinaryBuilder(input.data).readProgram(program); | 856         new BinaryBuilder(input.data).readProgram(program); | 
| 856       } else { | 857       } else { | 
| 857         // TODO(sigmund): remove this hack. Ship platform.dill with the SDK |  | 
| 858         // instead. |  | 
| 859         // Note: this logic only works on development and bot configurations, |  | 
| 860         // but will not work when using dart2js outside the repo. |  | 
| 861         var executableUri = new Uri.file(Platform.resolvedExecutable); |  | 
| 862         Uri platformFile = executableUri.path.endsWith('dart-sdk/bin/dart') |  | 
| 863             ? executableUri.resolve('../../patched_dart2js_sdk/platform.dill') |  | 
| 864             : executableUri.resolve('patched_dart2js_sdk/platform.dill'); |  | 
| 865         var options = new fe.CompilerOptions() | 858         var options = new fe.CompilerOptions() | 
| 866           ..fileSystem = new CompilerFileSystem(compilerInput) | 859           ..fileSystem = new CompilerFileSystem(compilerInput) | 
| 867           ..target = new Dart2jsTarget(new TargetFlags()) | 860           ..target = new Dart2jsTarget(new TargetFlags()) | 
| 868           ..compileSdk = true | 861           ..compileSdk = true | 
| 869           ..linkedDependencies = [platformFile] | 862           ..linkedDependencies = [ | 
|  | 863             sdkRoot.resolve('_internal/dart2js_platform.dill') | 
|  | 864           ] | 
| 870           ..onError = (e) => reportFrontEndMessage(reporter, e); | 865           ..onError = (e) => reportFrontEndMessage(reporter, e); | 
| 871 | 866 | 
| 872         program = await fe.kernelForProgram(resolvedUri, options); | 867         program = await fe.kernelForProgram(resolvedUri, options); | 
| 873       } | 868       } | 
| 874       if (program == null) return null; | 869       if (program == null) return null; | 
| 875       return createLoadedLibraries(program); | 870       return createLoadedLibraries(program); | 
| 876     }); | 871     }); | 
| 877   } | 872   } | 
| 878 | 873 | 
| 879   // Only visible for unit testing. | 874   // Only visible for unit testing. | 
| (...skipping 815 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 1695 } | 1690 } | 
| 1696 | 1691 | 
| 1697 /// API used by the library loader to synchronously scan a library or | 1692 /// API used by the library loader to synchronously scan a library or | 
| 1698 /// compilation unit and ensure that their library tags are computed. | 1693 /// compilation unit and ensure that their library tags are computed. | 
| 1699 abstract class ElementScanner { | 1694 abstract class ElementScanner { | 
| 1700   void scanLibrary(LibraryElement library); | 1695   void scanLibrary(LibraryElement library); | 
| 1701   void scanUnit(CompilationUnitElement unit); | 1696   void scanUnit(CompilationUnitElement unit); | 
| 1702 } | 1697 } | 
| 1703 | 1698 | 
| 1704 const _reuseLibrarySubtaskName = "Reuse library"; | 1699 const _reuseLibrarySubtaskName = "Reuse library"; | 
| OLD | NEW | 
|---|