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

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

Issue 2874723002: Add a way to use shared CanonicalName root to deserialize Program. (Closed)
Patch Set: Always compute canonical names. Use shared name root. 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 94 matching lines...) Expand 10 before | Expand all | Expand 10 after
105 } 105 }
106 } 106 }
107 107
108 class CompileTask { 108 class CompileTask {
109 final CompilerContext c; 109 final CompilerContext c;
110 final Ticker ticker; 110 final Ticker ticker;
111 111
112 CompileTask(this.c, this.ticker); 112 CompileTask(this.c, this.ticker);
113 113
114 DillTarget createDillTarget(TranslateUri uriTranslator) { 114 DillTarget createDillTarget(TranslateUri uriTranslator) {
115 return new DillTarget(ticker, uriTranslator); 115 return new DillTarget(null, ticker, uriTranslator);
116 } 116 }
117 117
118 KernelTarget createKernelTarget( 118 KernelTarget createKernelTarget(
119 DillTarget dillTarget, TranslateUri uriTranslator, bool strongMode) { 119 DillTarget dillTarget, TranslateUri uriTranslator, bool strongMode) {
120 return new KernelTarget( 120 return new KernelTarget(
121 c.fileSystem, dillTarget, uriTranslator, strongMode, c.uriToSource); 121 c.fileSystem, dillTarget, uriTranslator, strongMode, c.uriToSource);
122 } 122 }
123 123
124 Future<KernelTarget> buildOutline([Uri output]) async { 124 Future<KernelTarget> buildOutline([Uri output]) async {
125 TranslateUri uriTranslator = await TranslateUri.parse( 125 TranslateUri uriTranslator = await TranslateUri.parse(
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
172 if (!await new Directory.fromUri(patchedSdk).exists()) { 172 if (!await new Directory.fromUri(patchedSdk).exists()) {
173 return new CompilationResult.error( 173 return new CompilationResult.error(
174 formatUnexpected(patchedSdk, -1, "Patched sdk directory not found.")); 174 formatUnexpected(patchedSdk, -1, "Patched sdk directory not found."));
175 } 175 }
176 176
177 Program program; 177 Program program;
178 try { 178 try {
179 TranslateUri uriTranslator = 179 TranslateUri uriTranslator =
180 await TranslateUri.parse(PhysicalFileSystem.instance, null, packages); 180 await TranslateUri.parse(PhysicalFileSystem.instance, null, packages);
181 final Ticker ticker = new Ticker(isVerbose: verbose); 181 final Ticker ticker = new Ticker(isVerbose: verbose);
182 final DillTarget dillTarget = new DillTarget(ticker, uriTranslator); 182 final DillTarget dillTarget = new DillTarget(null, ticker, uriTranslator);
183 _appendDillForUri(dillTarget, patchedSdk.resolve('platform.dill')); 183 _appendDillForUri(dillTarget, patchedSdk.resolve('platform.dill'));
184 final KernelTarget kernelTarget = new KernelTarget( 184 final KernelTarget kernelTarget = new KernelTarget(
185 PhysicalFileSystem.instance, dillTarget, uriTranslator, strongMode); 185 PhysicalFileSystem.instance, dillTarget, uriTranslator, strongMode);
186 kernelTarget.read(fileName); 186 kernelTarget.read(fileName);
187 await dillTarget.writeOutline(null); 187 await dillTarget.writeOutline(null);
188 program = await kernelTarget.writeOutline(null); 188 program = await kernelTarget.writeOutline(null);
189 program = await kernelTarget.writeProgram(null); 189 program = await kernelTarget.writeProgram(null);
190 if (kernelTarget.errors.isNotEmpty) { 190 if (kernelTarget.errors.isNotEmpty) {
191 return new CompilationResult.errors(kernelTarget.errors 191 return new CompilationResult.errors(kernelTarget.errors
192 .map((err) => err.toString()) 192 .map((err) => err.toString())
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
243 await CompilerCommandLine.withGlobalOptions("", [""], 243 await CompilerCommandLine.withGlobalOptions("", [""],
244 (CompilerContext c) async { 244 (CompilerContext c) async {
245 c.options.options["--packages"] = packages; 245 c.options.options["--packages"] = packages;
246 if (verbose) { 246 if (verbose) {
247 c.options.options["--verbose"] = true; 247 c.options.options["--verbose"] = true;
248 } 248 }
249 249
250 TranslateUri uriTranslator = await TranslateUri.parse( 250 TranslateUri uriTranslator = await TranslateUri.parse(
251 c.fileSystem, c.options.sdk, c.options.packages); 251 c.fileSystem, c.options.sdk, c.options.packages);
252 ticker.logMs("Read packages file"); 252 ticker.logMs("Read packages file");
253 DillTarget dillTarget = new DillTarget(ticker, uriTranslator); 253 DillTarget dillTarget = new DillTarget(null, ticker, uriTranslator);
254 _appendDillForUri(dillTarget, platform); 254 _appendDillForUri(dillTarget, platform);
255 KernelTarget kernelTarget = new KernelTarget(PhysicalFileSystem.instance, 255 KernelTarget kernelTarget = new KernelTarget(PhysicalFileSystem.instance,
256 dillTarget, uriTranslator, false, c.uriToSource); 256 dillTarget, uriTranslator, false, c.uriToSource);
257 257
258 kernelTarget.read(script); 258 kernelTarget.read(script);
259 await dillTarget.writeOutline(null); 259 await dillTarget.writeOutline(null);
260 await kernelTarget.loader.buildOutlines(); 260 await kernelTarget.loader.buildOutlines();
261 await kernelTarget.writeDepsFile(output, depsFile, 261 await kernelTarget.writeDepsFile(output, depsFile,
262 extraDependencies: extraDependencies); 262 extraDependencies: extraDependencies);
263 }); 263 });
264 } 264 }
265 265
266 /// Load the [Program] from the given [uri] and append its libraries 266 /// Load the [Program] from the given [uri] and append its libraries
267 /// to the [dillTarget]. 267 /// to the [dillTarget].
268 void _appendDillForUri(DillTarget dillTarget, Uri uri) { 268 void _appendDillForUri(DillTarget dillTarget, Uri uri) {
269 var bytes = new File.fromUri(uri).readAsBytesSync(); 269 var bytes = new File.fromUri(uri).readAsBytesSync();
270 var platformProgram = loadProgramFromBytes(bytes); 270 var platformProgram = loadProgramFromBytes(bytes);
271 platformProgram.unbindCanonicalNames();
271 dillTarget.loader.appendLibraries(platformProgram); 272 dillTarget.loader.appendLibraries(platformProgram);
272 } 273 }
273 274
274 // TODO(ahe): https://github.com/dart-lang/sdk/issues/28316 275 // TODO(ahe): https://github.com/dart-lang/sdk/issues/28316
275 class ByteSink implements Sink<List<int>> { 276 class ByteSink implements Sink<List<int>> {
276 final BytesBuilder builder = new BytesBuilder(); 277 final BytesBuilder builder = new BytesBuilder();
277 278
278 void add(List<int> data) { 279 void add(List<int> data) {
279 builder.add(data); 280 builder.add(data);
280 } 281 }
281 282
282 void close() { 283 void close() {
283 // Nothing to do. 284 // Nothing to do.
284 } 285 }
285 } 286 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698