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

Side by Side Diff: pkg/front_end/tool/_fasta/entry_points.dart

Issue 3003743002: Move tools to tool folder. (Closed)
Patch Set: Created 3 years, 3 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) 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.tool.entry_points;
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
11 import 'dart:io' show BytesBuilder, File, exitCode; 11 import 'dart:io' show File, exitCode;
12 12
13 import 'package:front_end/compiler_options.dart'; 13 import 'package:front_end/src/fasta/compiler_context.dart' show CompilerContext;
14 import 'package:front_end/src/base/processed_options.dart'; 14
15 import 'package:front_end/physical_file_system.dart'; 15 import 'package:front_end/src/fasta/deprecated_problems.dart'
16 import 'package:front_end/src/fasta/kernel/utils.dart'; 16 show deprecated_InputError, deprecated_inputError;
17
18 import 'package:front_end/src/fasta/dill/dill_target.dart' show DillTarget;
19
20 import 'package:front_end/src/fasta/kernel/kernel_target.dart'
21 show KernelTarget;
22
23 import 'package:front_end/src/fasta/kernel/utils.dart'
24 show printProgramText, writeProgramToFile;
25
26 import 'package:front_end/src/fasta/severity.dart' show Severity;
27
28 import 'package:front_end/src/fasta/ticker.dart' show Ticker;
29
30 import 'package:front_end/src/fasta/uri_translator.dart' show UriTranslator;
17 31
18 import 'package:kernel/kernel.dart' show Program, loadProgramFromBytes; 32 import 'package:kernel/kernel.dart' show Program, loadProgramFromBytes;
19 33
20 import 'compiler_command_line.dart' show CompilerCommandLine; 34 import 'command_line.dart' show withGlobalOptions;
21
22 import 'compiler_context.dart' show CompilerContext;
23
24 import 'deprecated_problems.dart'
25 show deprecated_InputError, deprecated_inputError;
26
27 import 'kernel/kernel_target.dart' show KernelTarget;
28
29 import 'package:kernel/target/targets.dart' show Target;
30
31 import 'dill/dill_target.dart' show DillTarget;
32
33 import 'severity.dart' show Severity;
34
35 import 'ticker.dart' show Ticker;
36
37 import 'uri_translator.dart' show UriTranslator;
38 35
39 const bool summary = const bool.fromEnvironment("summary", defaultValue: false); 36 const bool summary = const bool.fromEnvironment("summary", defaultValue: false);
37
40 const int iterations = const int.fromEnvironment("iterations", defaultValue: 1); 38 const int iterations = const int.fromEnvironment("iterations", defaultValue: 1);
41 39
42 compileEntryPoint(List<String> arguments) async { 40 compileEntryPoint(List<String> arguments) async {
43 // Timing results for each iteration 41 // Timing results for each iteration
44 List<double> elapsedTimes = <double>[]; 42 List<double> elapsedTimes = <double>[];
45 43
46 for (int i = 0; i < iterations; i++) { 44 for (int i = 0; i < iterations; i++) {
47 if (i > 0) { 45 if (i > 0) {
48 print("\n\n=== Iteration ${i+1} of $iterations"); 46 print("\n\n=== Iteration ${i+1} of $iterations");
49 } 47 }
(...skipping 14 matching lines...) Expand all
64 for (int i = 0; i < iterations; i++) { 62 for (int i = 0; i < iterations; i++) {
65 if (i > 0) { 63 if (i > 0) {
66 print("\n"); 64 print("\n");
67 } 65 }
68 await outline(arguments); 66 await outline(arguments);
69 } 67 }
70 } 68 }
71 69
72 Future<KernelTarget> outline(List<String> arguments) async { 70 Future<KernelTarget> outline(List<String> arguments) async {
73 try { 71 try {
74 return await CompilerCommandLine.withGlobalOptions( 72 return await withGlobalOptions("outline", arguments, true,
75 "outline", arguments, true, (CompilerContext c, _) async { 73 (CompilerContext c, _) async {
76 if (c.options.verbose) { 74 if (c.options.verbose) {
77 print("Building outlines for ${arguments.join(' ')}"); 75 print("Building outlines for ${arguments.join(' ')}");
78 } 76 }
79 CompileTask task = 77 CompileTask task =
80 new CompileTask(c, new Ticker(isVerbose: c.options.verbose)); 78 new CompileTask(c, new Ticker(isVerbose: c.options.verbose));
81 return await task.buildOutline(c.options.output); 79 return await task.buildOutline(c.options.output);
82 }); 80 });
83 } on deprecated_InputError catch (e) { 81 } on deprecated_InputError catch (e) {
84 exitCode = 1; 82 exitCode = 1;
85 CompilerContext.runWithDefaultOptions( 83 CompilerContext.runWithDefaultOptions(
86 (c) => c.report(deprecated_InputError.toMessage(e), Severity.error)); 84 (c) => c.report(deprecated_InputError.toMessage(e), Severity.error));
87 return null; 85 return null;
88 } 86 }
89 } 87 }
90 88
91 Future<Uri> compile(List<String> arguments) async { 89 Future<Uri> compile(List<String> arguments) async {
92 try { 90 try {
93 return await CompilerCommandLine.withGlobalOptions( 91 return await withGlobalOptions("compile", arguments, true,
94 "compile", arguments, true, (CompilerContext c, _) async { 92 (CompilerContext c, _) async {
95 if (c.options.verbose) { 93 if (c.options.verbose) {
96 print("Compiling directly to Kernel: ${arguments.join(' ')}"); 94 print("Compiling directly to Kernel: ${arguments.join(' ')}");
97 } 95 }
98 CompileTask task = 96 CompileTask task =
99 new CompileTask(c, new Ticker(isVerbose: c.options.verbose)); 97 new CompileTask(c, new Ticker(isVerbose: c.options.verbose));
100 return await task.compile(); 98 return await task.compile();
101 }); 99 });
102 } on deprecated_InputError catch (e) { 100 } on deprecated_InputError catch (e) {
103 exitCode = 1; 101 exitCode = 1;
104 CompilerContext.runWithDefaultOptions( 102 CompilerContext.runWithDefaultOptions(
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
162 var program = await kernelTarget.buildProgram(verify: c.options.verify); 160 var program = await kernelTarget.buildProgram(verify: c.options.verify);
163 if (c.options.debugDump) { 161 if (c.options.debugDump) {
164 printProgramText(program, libraryFilter: kernelTarget.isSourceLibrary); 162 printProgramText(program, libraryFilter: kernelTarget.isSourceLibrary);
165 } 163 }
166 await writeProgramToFile(program, uri); 164 await writeProgramToFile(program, uri);
167 ticker.logMs("Wrote program to ${uri.toFilePath()}"); 165 ticker.logMs("Wrote program to ${uri.toFilePath()}");
168 return uri; 166 return uri;
169 } 167 }
170 } 168 }
171 169
172 // TODO(sigmund): reimplement this API using the directive listener intead.
173 Future<List<Uri>> getDependencies(Uri script,
174 {Uri sdk,
175 Uri packages,
176 Uri platform,
177 bool verbose: false,
178 Target target}) async {
179 var options = new CompilerOptions()
180 ..target = target
181 ..verbose = verbose
182 ..packagesFileUri = packages
183 ..sdkSummary = platform
184 ..sdkRoot = sdk;
185 var pOptions = new ProcessedOptions(options);
186 return await CompilerContext.runWithOptions(pOptions,
187 (CompilerContext c) async {
188 UriTranslator uriTranslator = await c.options.getUriTranslator();
189 c.options.ticker.logMs("Read packages file");
190 DillTarget dillTarget =
191 new DillTarget(c.options.ticker, uriTranslator, c.options.target);
192 if (platform != null) _appendDillForUri(dillTarget, platform);
193 KernelTarget kernelTarget = new KernelTarget(PhysicalFileSystem.instance,
194 false, dillTarget, uriTranslator, c.uriToSource);
195
196 kernelTarget.read(script);
197 await dillTarget.buildOutlines();
198 await kernelTarget.loader.buildOutlines();
199 return await kernelTarget.loader.getDependencies();
200 });
201 }
202
203 /// Load the [Program] from the given [uri] and append its libraries 170 /// Load the [Program] from the given [uri] and append its libraries
204 /// to the [dillTarget]. 171 /// to the [dillTarget].
205 void _appendDillForUri(DillTarget dillTarget, Uri uri) { 172 void _appendDillForUri(DillTarget dillTarget, Uri uri) {
206 var bytes = new File.fromUri(uri).readAsBytesSync(); 173 var bytes = new File.fromUri(uri).readAsBytesSync();
207 var platformProgram = loadProgramFromBytes(bytes); 174 var platformProgram = loadProgramFromBytes(bytes);
208 platformProgram.unbindCanonicalNames(); 175 platformProgram.unbindCanonicalNames();
209 dillTarget.loader.appendLibraries(platformProgram); 176 dillTarget.loader.appendLibraries(platformProgram);
210 } 177 }
211
212 // TODO(ahe): https://github.com/dart-lang/sdk/issues/28316
213 class ByteSink implements Sink<List<int>> {
214 final BytesBuilder builder = new BytesBuilder();
215
216 void add(List<int> data) {
217 builder.add(data);
218 }
219
220 void close() {
221 // Nothing to do.
222 }
223 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698