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

Side by Side Diff: utils/kernel-service/kernel-service.dart

Issue 2979003002: support resolving .packages in FE (Closed)
Patch Set: cl comments Created 3 years, 5 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
« no previous file with comments | « tests/standalone/standalone.status ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 /// This is an interface to the Dart Kernel parser and Kernel binary generator. 5 /// This is an interface to the Dart Kernel parser and Kernel binary generator.
6 /// 6 ///
7 /// It is used by the kernel-isolate to load Dart source code and generate 7 /// It is used by the kernel-isolate to load Dart source code and generate
8 /// Kernel binary format. 8 /// Kernel binary format.
9 /// 9 ///
10 /// This is either invoked as the root script of the Kernel isolate when used 10 /// This is either invoked as the root script of the Kernel isolate when used
11 /// as a part of 11 /// as a part of
12 /// 12 ///
13 /// dart --dfe=utils/kernel-service/kernel-service.dart ... 13 /// dart --dfe=utils/kernel-service/kernel-service.dart ...
14 /// 14 ///
15 /// invocation or it is invoked as a standalone script to perform training for 15 /// invocation or it is invoked as a standalone script to perform training for
16 /// the app-jit snapshot 16 /// the app-jit snapshot
17 /// 17 ///
18 /// dart utils/kernel-service/kernel-service.dart --train <source-file> 18 /// dart utils/kernel-service/kernel-service.dart --train <source-file>
19 /// 19 ///
20 /// 20 ///
21 library runtime.tools.kernel_service; 21 library runtime.tools.kernel_service;
22 22
23 import 'dart:async' show Future; 23 import 'dart:async' show Future;
24 import 'dart:io' show File, Platform hide FileSystemEntity; 24 import 'dart:io' show Platform hide FileSystemEntity;
25 import 'dart:isolate'; 25 import 'dart:isolate';
26 import 'dart:typed_data' show Uint8List; 26 import 'dart:typed_data' show Uint8List;
27 27
28 import 'package:front_end/file_system.dart'; 28 import 'package:front_end/file_system.dart';
29 import 'package:front_end/front_end.dart'; 29 import 'package:front_end/front_end.dart';
30 import 'package:front_end/memory_file_system.dart'; 30 import 'package:front_end/memory_file_system.dart';
31 import 'package:front_end/physical_file_system.dart'; 31 import 'package:front_end/physical_file_system.dart';
32 import 'package:front_end/src/fasta/kernel/utils.dart'; 32 import 'package:front_end/src/fasta/kernel/utils.dart';
33 import 'package:front_end/src/testing/hybrid_file_system.dart'; 33 import 'package:front_end/src/testing/hybrid_file_system.dart';
34 import 'package:kernel/kernel.dart' show Program; 34 import 'package:kernel/kernel.dart' show Program;
35 import 'package:kernel/target/targets.dart' show TargetFlags; 35 import 'package:kernel/target/targets.dart' show TargetFlags;
36 import 'package:kernel/target/vm_fasta.dart' show VmFastaTarget; 36 import 'package:kernel/target/vm_fasta.dart' show VmFastaTarget;
37 37
38 const bool verbose = const bool.fromEnvironment('DFE_VERBOSE'); 38 const bool verbose = const bool.fromEnvironment('DFE_VERBOSE');
39 39
40 const bool strongMode = const bool.fromEnvironment('DFE_STRONG_MODE'); 40 const bool strongMode = const bool.fromEnvironment('DFE_STRONG_MODE');
41 41
42 Future<CompilationResult> _parseScriptInFileSystem( 42 Future<CompilationResult> _parseScriptInFileSystem(
43 Uri script, FileSystem fileSystem, 43 Uri script, FileSystem fileSystem,
44 {bool verbose: false, bool strongMode: false}) async { 44 {bool verbose: false, bool strongMode: false}) async {
45 final Uri packagesUri = (Platform.packageConfig != null) 45 final Uri packagesUri = (Platform.packageConfig != null)
46 ? Uri.parse(Platform.packageConfig) 46 ? Uri.parse(Platform.packageConfig)
47 : await _findPackagesFile(fileSystem, script); 47 : null;
48 if (packagesUri == null) {
49 throw "Could not find .packages";
50 }
51 48
52 final Uri patchedSdk = Uri.base 49 final Uri patchedSdk = Uri.base
53 .resolveUri(new Uri.file(Platform.resolvedExecutable)) 50 .resolveUri(new Uri.file(Platform.resolvedExecutable))
54 .resolveUri(new Uri.directory("patched_sdk")); 51 .resolveUri(new Uri.directory("patched_sdk"));
55 52
56 if (verbose) { 53 if (verbose) {
57 print("""DFE: Requesting compilation { 54 print("""DFE: Requesting compilation {
58 scriptUri: ${script} 55 scriptUri: ${script}
59 packagesUri: ${packagesUri} 56 packagesUri: ${packagesUri}
60 patchedSdk: ${patchedSdk} 57 patchedSdk: ${patchedSdk}
(...skipping 20 matching lines...) Expand all
81 // marked `external`, so we can use that bit to decide what to excluce. 78 // marked `external`, so we can use that bit to decide what to excluce.
82 // TODO(sigmund): remove the following line (Issue #30111) 79 // TODO(sigmund): remove the following line (Issue #30111)
83 program.libraries.forEach((e) => e.isExternal = false); 80 program.libraries.forEach((e) => e.isExternal = false);
84 return new CompilationResult.ok( 81 return new CompilationResult.ok(
85 serializeProgram(program, filter: (lib) => !lib.isExternal)); 82 serializeProgram(program, filter: (lib) => !lib.isExternal));
86 } catch (err, stack) { 83 } catch (err, stack) {
87 return new CompilationResult.crash(err, stack); 84 return new CompilationResult.crash(err, stack);
88 } 85 }
89 } 86 }
90 87
91 /// This duplicates functionality from the Loader which we can't easily
92 /// access from here.
93 // TODO(sigmund): delete, this should be supported by the default options in
94 // package:front_end.
95 Future<Uri> _findPackagesFile(FileSystem fileSystem, Uri base) async {
96 var dir = new File.fromUri(base).parent;
97 while (true) {
98 final packagesFile = dir.uri.resolve(".packages");
99 if (await fileSystem.entityForUri(packagesFile).exists()) {
100 return packagesFile;
101 }
102 if (dir.parent.path == dir.path) {
103 break;
104 }
105 dir = dir.parent;
106 }
107 return null;
108 }
109
110 Future<CompilationResult> _processLoadRequestImpl( 88 Future<CompilationResult> _processLoadRequestImpl(
111 String inputFilePathOrUri, FileSystem fileSystem) { 89 String inputFilePathOrUri, FileSystem fileSystem) {
112 Uri scriptUri = Uri.parse(inputFilePathOrUri); 90 Uri scriptUri = Uri.parse(inputFilePathOrUri);
113 91
114 // Because we serve both Loader and bootstrapping requests we need to 92 // Because we serve both Loader and bootstrapping requests we need to
115 // duplicate the logic from _resolveScriptUri(...) here and attempt to 93 // duplicate the logic from _resolveScriptUri(...) here and attempt to
116 // resolve schemaless uris using current working directory. 94 // resolve schemaless uris using current working directory.
117 if (!scriptUri.hasScheme) { 95 if (!scriptUri.hasScheme) {
118 // Script does not have a scheme, assume that it is a path, 96 // Script does not have a scheme, assume that it is a path,
119 // resolve it against the working directory. 97 // resolve it against the working directory.
(...skipping 176 matching lines...) Expand 10 before | Expand all | Expand 10 after
296 _CompilationCrash(this.exception, this.stack); 274 _CompilationCrash(this.exception, this.stack);
297 275
298 @override 276 @override
299 Status get status => Status.crash; 277 Status get status => Status.crash;
300 278
301 @override 279 @override
302 String get errorString => "${exception}\n${stack}"; 280 String get errorString => "${exception}\n${stack}";
303 281
304 String toString() => "_CompilationCrash(${errorString})"; 282 String toString() => "_CompilationCrash(${errorString})";
305 } 283 }
OLDNEW
« no previous file with comments | « tests/standalone/standalone.status ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698