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

Side by Side Diff: pkg/front_end/lib/src/fasta/fasta.dart

Issue 2832353002: Add support for building patched_sdk and platform.dill for dart2js: (Closed)
Patch Set: rebase Created 3 years, 7 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;
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 93 matching lines...) Expand 10 before | Expand all | Expand 10 after
104 } 104 }
105 105
106 class CompileTask { 106 class CompileTask {
107 final CompilerContext c; 107 final CompilerContext c;
108 final Ticker ticker; 108 final Ticker ticker;
109 109
110 CompileTask(this.c, this.ticker); 110 CompileTask(this.c, this.ticker);
111 111
112 KernelTarget createKernelTarget( 112 KernelTarget createKernelTarget(
113 DillTarget dillTarget, TranslateUri uriTranslator, bool strongMode) { 113 DillTarget dillTarget, TranslateUri uriTranslator, bool strongMode) {
114 return new KernelTarget( 114 return new KernelTarget(dillTarget, uriTranslator, strongMode,
115 dillTarget, uriTranslator, strongMode, c.uriToSource); 115 c.options.targetDart2js, c.uriToSource);
116 } 116 }
117 117
118 Future<KernelTarget> buildOutline([Uri output]) async { 118 Future<KernelTarget> buildOutline([Uri output]) async {
119 TranslateUri uriTranslator = 119 TranslateUri uriTranslator =
120 await TranslateUri.parse(c.options.sdk, c.options.packages); 120 await TranslateUri.parse(c.options.sdk, c.options.packages);
121 ticker.logMs("Read packages file"); 121 ticker.logMs("Read packages file");
122 DillTarget dillTarget = new DillTarget(ticker, uriTranslator); 122 DillTarget dillTarget =
123 new DillTarget(ticker, uriTranslator, c.options.targetDart2js);
123 KernelTarget kernelTarget = 124 KernelTarget kernelTarget =
124 createKernelTarget(dillTarget, uriTranslator, c.options.strongMode); 125 createKernelTarget(dillTarget, uriTranslator, c.options.strongMode);
125 if (c.options.strongMode) { 126 if (c.options.strongMode) {
126 print("Note: strong mode support is preliminary and may not work."); 127 print("Note: strong mode support is preliminary and may not work.");
127 } 128 }
128 Uri platform = c.options.platform; 129 Uri platform = c.options.platform;
129 if (platform != null) { 130 if (platform != null) {
130 dillTarget.read(platform); 131 dillTarget.read(platform);
131 } 132 }
132 String argument = c.options.arguments.first; 133 String argument = c.options.arguments.first;
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
167 return new CompilationResult.error( 168 return new CompilationResult.error(
168 formatUnexpected(patchedSdk, -1, "Patched sdk directory not found.")); 169 formatUnexpected(patchedSdk, -1, "Patched sdk directory not found."));
169 } 170 }
170 171
171 Target target = getTarget("vm", new TargetFlags(strongMode: false)); 172 Target target = getTarget("vm", new TargetFlags(strongMode: false));
172 173
173 Program program; 174 Program program;
174 try { 175 try {
175 TranslateUri uriTranslator = await TranslateUri.parse(null, packages); 176 TranslateUri uriTranslator = await TranslateUri.parse(null, packages);
176 final Ticker ticker = new Ticker(isVerbose: verbose); 177 final Ticker ticker = new Ticker(isVerbose: verbose);
177 final DillTarget dillTarget = new DillTarget(ticker, uriTranslator); 178 final DillTarget dillTarget =
179 new DillTarget(ticker, uriTranslator, false);
178 dillTarget.read(patchedSdk.resolve('platform.dill')); 180 dillTarget.read(patchedSdk.resolve('platform.dill'));
179 final KernelTarget kernelTarget = 181 final KernelTarget kernelTarget =
180 new KernelTarget(dillTarget, uriTranslator, strongMode); 182 new KernelTarget(dillTarget, uriTranslator, strongMode, false);
181 kernelTarget.read(fileName); 183 kernelTarget.read(fileName);
182 await dillTarget.writeOutline(null); 184 await dillTarget.writeOutline(null);
183 program = await kernelTarget.writeOutline(null); 185 program = await kernelTarget.writeOutline(null);
184 program = await kernelTarget.writeProgram(null); 186 program = await kernelTarget.writeProgram(null);
185 if (kernelTarget.errors.isNotEmpty) { 187 if (kernelTarget.errors.isNotEmpty) {
186 return new CompilationResult.errors(kernelTarget.errors 188 return new CompilationResult.errors(kernelTarget.errors
187 .map((err) => err.toString()) 189 .map((err) => err.toString())
188 .toList(growable: false)); 190 .toList(growable: false));
189 } 191 }
190 } on InputError catch (e) { 192 } on InputError catch (e) {
(...skipping 11 matching lines...) Expand all
202 // Write the program to a list of bytes and return it. 204 // Write the program to a list of bytes and return it.
203 var sink = new ByteSink(); 205 var sink = new ByteSink();
204 new BinaryPrinter(sink).writeProgramFile(program); 206 new BinaryPrinter(sink).writeProgramFile(program);
205 return new CompilationResult.ok(sink.builder.takeBytes()); 207 return new CompilationResult.ok(sink.builder.takeBytes());
206 } catch (e, s) { 208 } catch (e, s) {
207 return reportCrash(e, s, fileName); 209 return reportCrash(e, s, fileName);
208 } 210 }
209 } 211 }
210 212
211 Future compilePlatform(Uri patchedSdk, Uri output, 213 Future compilePlatform(Uri patchedSdk, Uri output,
212 {Uri packages, bool verbose: false}) async { 214 {Uri packages, bool verbose: false, bool targetDart2js: false}) async {
213 Ticker ticker = new Ticker(isVerbose: verbose); 215 Ticker ticker = new Ticker(isVerbose: verbose);
214 await CompilerCommandLine.withGlobalOptions("", [""], (CompilerContext c) { 216 await CompilerCommandLine.withGlobalOptions("", [""], (CompilerContext c) {
215 c.options.options["--packages"] = packages; 217 c.options.options["--packages"] = packages;
216 if (verbose) { 218 if (verbose) {
217 c.options.options["--verbose"] = true; 219 c.options.options["--verbose"] = true;
218 } 220 }
221 if (targetDart2js) {
222 c.options.options["--target"] = "dart2js";
223 }
219 return compilePlatformInternal(c, ticker, patchedSdk, output); 224 return compilePlatformInternal(c, ticker, patchedSdk, output);
220 }); 225 });
221 } 226 }
222 227
223 Future writeDepsFile(Uri script, Uri depsFile, Uri output, 228 Future writeDepsFile(Uri script, Uri depsFile, Uri output,
224 {Uri packages, 229 {Uri packages,
225 Uri platform, 230 Uri platform,
226 Iterable<Uri> extraDependencies, 231 Iterable<Uri> extraDependencies,
227 bool verbose: false}) async { 232 bool verbose: false,
233 bool targetDart2js: false}) async {
228 Ticker ticker = new Ticker(isVerbose: verbose); 234 Ticker ticker = new Ticker(isVerbose: verbose);
229 await CompilerCommandLine.withGlobalOptions("", [""], 235 await CompilerCommandLine.withGlobalOptions("", [""],
230 (CompilerContext c) async { 236 (CompilerContext c) async {
231 c.options.options["--packages"] = packages; 237 c.options.options["--packages"] = packages;
232 if (verbose) { 238 if (verbose) {
233 c.options.options["--verbose"] = true; 239 c.options.options["--verbose"] = true;
234 } 240 }
241 if (targetDart2js) {
242 c.options.options["--target"] = "dart2js";
243 }
235 244
236 TranslateUri uriTranslator = 245 TranslateUri uriTranslator =
237 await TranslateUri.parse(c.options.sdk, c.options.packages); 246 await TranslateUri.parse(c.options.sdk, c.options.packages);
238 ticker.logMs("Read packages file"); 247 ticker.logMs("Read packages file");
239 DillTarget dillTarget = new DillTarget(ticker, uriTranslator) 248 DillTarget dillTarget = new DillTarget(ticker, uriTranslator, targetDart2js)
240 ..read(platform); 249 ..read(platform);
241 KernelTarget kernelTarget = 250 KernelTarget kernelTarget = new KernelTarget(
242 new KernelTarget(dillTarget, uriTranslator, false, c.uriToSource); 251 dillTarget, uriTranslator, false, targetDart2js, c.uriToSource);
243 252
244 kernelTarget.read(script); 253 kernelTarget.read(script);
245 await dillTarget.writeOutline(null); 254 await dillTarget.writeOutline(null);
246 await kernelTarget.loader.buildOutlines(); 255 await kernelTarget.loader.buildOutlines();
247 await kernelTarget.writeDepsFile(output, depsFile, 256 await kernelTarget.writeDepsFile(output, depsFile,
248 extraDependencies: extraDependencies); 257 extraDependencies: extraDependencies);
249 }); 258 });
250 } 259 }
251 260
252 // TODO(ahe): https://github.com/dart-lang/sdk/issues/28316 261 // TODO(ahe): https://github.com/dart-lang/sdk/issues/28316
253 class ByteSink implements Sink<List<int>> { 262 class ByteSink implements Sink<List<int>> {
254 final BytesBuilder builder = new BytesBuilder(); 263 final BytesBuilder builder = new BytesBuilder();
255 264
256 void add(List<int> data) { 265 void add(List<int> data) {
257 builder.add(data); 266 builder.add(data);
258 } 267 }
259 268
260 void close() { 269 void close() {
261 // Nothing to do. 270 // Nothing to do.
262 } 271 }
263 } 272 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698