Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(280)

Side by Side Diff: pkg/compiler/lib/src/library_loader.dart

Issue 2988063002: Use dart2js_plaform.dill from the sdk. (Closed)
Patch Set: add comment about why --host-checked and --use-sdk is not supported Created 3 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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
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
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";
OLDNEW
« no previous file with comments | « pkg/compiler/lib/src/kernel/kernel_strategy.dart ('k') | tests/compiler/dart2js_extra/dart2js_extra.status » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698