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

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

Issue 2798443002: Add "load from .dill" file capability and run a white-box test. (Closed)
Patch Set: johnni comments Created 3 years, 8 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 | « pkg/compiler/lib/src/commandline_options.dart ('k') | pkg/compiler/lib/src/dart2js.dart » ('j') | 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) 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.compiler_base; 5 library dart2js.compiler_base;
6 6
7 import 'dart:async' show Future; 7 import 'dart:async' show Future;
8 8
9 import '../compiler_new.dart' as api; 9 import '../compiler_new.dart' as api;
10 import 'closure.dart' as closureMapping show ClosureTask; 10 import 'closure.dart' as closureMapping show ClosureTask;
(...skipping 26 matching lines...) Expand all
37 show 37 show
38 ResolutionDartType, 38 ResolutionDartType,
39 ResolutionDynamicType, 39 ResolutionDynamicType,
40 ResolutionInterfaceType, 40 ResolutionInterfaceType,
41 Types; 41 Types;
42 import 'enqueue.dart' show Enqueuer, EnqueueTask, ResolutionEnqueuer; 42 import 'enqueue.dart' show Enqueuer, EnqueueTask, ResolutionEnqueuer;
43 import 'environment.dart'; 43 import 'environment.dart';
44 import 'id_generator.dart'; 44 import 'id_generator.dart';
45 import 'io/source_information.dart' show SourceInformation; 45 import 'io/source_information.dart' show SourceInformation;
46 import 'js_backend/backend.dart' show JavaScriptBackend; 46 import 'js_backend/backend.dart' show JavaScriptBackend;
47 import 'kernel/world_builder.dart' show KernelWorldBuilder;
47 import 'library_loader.dart' 48 import 'library_loader.dart'
48 show 49 show
49 ElementScanner, 50 ElementScanner,
50 LibraryLoader, 51 LibraryLoader,
51 LibraryLoaderTask, 52 LibraryLoaderTask,
52 LoadedLibraries, 53 LoadedLibraries,
53 LibraryProvider, 54 LibraryProvider,
54 ScriptLoader; 55 ScriptLoader;
55 import 'mirrors_used.dart' show MirrorUsageAnalyzerTask; 56 import 'mirrors_used.dart' show MirrorUsageAnalyzerTask;
56 import 'null_compiler_output.dart' show NullCompilerOutput, NullSink; 57 import 'null_compiler_output.dart' show NullCompilerOutput, NullSink;
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
107 * If true, stop compilation after type inference is complete. Used for 108 * If true, stop compilation after type inference is complete. Used for
108 * debugging and testing purposes only. 109 * debugging and testing purposes only.
109 */ 110 */
110 bool stopAfterTypeInference = false; 111 bool stopAfterTypeInference = false;
111 112
112 /// Output provider from user of Compiler API. 113 /// Output provider from user of Compiler API.
113 api.CompilerOutput userOutputProvider; 114 api.CompilerOutput userOutputProvider;
114 115
115 List<Uri> librariesToAnalyzeWhenRun; 116 List<Uri> librariesToAnalyzeWhenRun;
116 117
118 /// Object holding the correspondence between Kernel IR and their
119 /// corresponding K/JElements. Only (currently) used when used in conjunction
120 /// with --use-kernel and --read-dill flags.
121 KernelWorldBuilder kernelWorldBuilder;
122
117 ResolvedUriTranslator get resolvedUriTranslator; 123 ResolvedUriTranslator get resolvedUriTranslator;
118 124
119 LibraryElement mainApp; 125 LibraryElement mainApp;
120 MethodElement mainFunction; 126 MethodElement mainFunction;
121 127
122 DiagnosticReporter get reporter => _reporter; 128 DiagnosticReporter get reporter => _reporter;
123 ElementEnvironment get elementEnvironment => _elementEnvironment; 129 ElementEnvironment get elementEnvironment => _elementEnvironment;
124 CommonElements get commonElements => _commonElements; 130 CommonElements get commonElements => _commonElements;
125 Resolution get resolution => _resolution; 131 Resolution get resolution => _resolution;
126 ParsingContext get parsingContext => _parsingContext; 132 ParsingContext get parsingContext => _parsingContext;
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after
205 211
206 backend = createBackend(); 212 backend = createBackend();
207 enqueuer = backend.makeEnqueuer(); 213 enqueuer = backend.makeEnqueuer();
208 214
209 tasks = [ 215 tasks = [
210 dietParser = new DietParserTask(idGenerator, backend, reporter, measurer), 216 dietParser = new DietParserTask(idGenerator, backend, reporter, measurer),
211 scanner = createScannerTask(), 217 scanner = createScannerTask(),
212 serialization = new SerializationTask(this), 218 serialization = new SerializationTask(this),
213 patchParser = new PatchParserTask(this), 219 patchParser = new PatchParserTask(this),
214 libraryLoader = new LibraryLoaderTask( 220 libraryLoader = new LibraryLoaderTask(
221 options.loadFromDill,
215 resolvedUriTranslator, 222 resolvedUriTranslator,
216 options.compileOnly 223 options.compileOnly
217 ? new _NoScriptLoader(this) 224 ? new _NoScriptLoader(this)
218 : new _ScriptLoader(this), 225 : new _ScriptLoader(this),
219 new _ElementScanner(scanner), 226 new _ElementScanner(scanner),
220 serialization, 227 serialization,
221 resolvePatchUri, 228 resolvePatchUri,
222 patchParser, 229 patchParser,
223 environment, 230 environment,
224 reporter, 231 reporter,
(...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after
341 !link.isEmpty; 348 !link.isEmpty;
342 link = link.tail) { 349 link = link.tail) {
343 Uri uri = link.head; 350 Uri uri = link.head;
344 if (!currentCodeLocation.inSameLocation(uri)) { 351 if (!currentCodeLocation.inSameLocation(uri)) {
345 currentCodeLocation = 352 currentCodeLocation =
346 options.verbose ? new UriLocation(uri) : new CodeLocation(uri); 353 options.verbose ? new UriLocation(uri) : new CodeLocation(uri);
347 compactImportChain = compactImportChain.prepend(currentCodeLocation); 354 compactImportChain = compactImportChain.prepend(currentCodeLocation);
348 } 355 }
349 } 356 }
350 String importChain = compactImportChain.map((CodeLocation codeLocation) { 357 String importChain = compactImportChain.map((CodeLocation codeLocation) {
351 return codeLocation 358 return codeLocation.relativize(
352 .relativize(loadedLibraries.rootLibrary.canonicalUri); 359 (loadedLibraries.rootLibrary as LibraryElement).canonicalUri);
353 }).join(' => '); 360 }).join(' => ');
354 361
355 if (!importChains.contains(importChain)) { 362 if (!importChains.contains(importChain)) {
356 if (importChains.length > compactChainLimit) { 363 if (importChains.length > compactChainLimit) {
357 importChains.add('...'); 364 importChains.add('...');
358 return false; 365 return false;
359 } else { 366 } else {
360 importChains.add(importChain); 367 importChains.add(importChain);
361 } 368 }
362 } 369 }
(...skipping 11 matching lines...) Expand all
374 381
375 /// This method is called when all new libraries loaded through 382 /// This method is called when all new libraries loaded through
376 /// [LibraryLoader.loadLibrary] has been loaded and their imports/exports 383 /// [LibraryLoader.loadLibrary] has been loaded and their imports/exports
377 /// have been computed. 384 /// have been computed.
378 /// 385 ///
379 /// [loadedLibraries] contains the newly loaded libraries. 386 /// [loadedLibraries] contains the newly loaded libraries.
380 /// 387 ///
381 /// The method returns a [Future] allowing for the loading of additional 388 /// The method returns a [Future] allowing for the loading of additional
382 /// libraries. 389 /// libraries.
383 LoadedLibraries processLoadedLibraries(LoadedLibraries loadedLibraries) { 390 LoadedLibraries processLoadedLibraries(LoadedLibraries loadedLibraries) {
384 loadedLibraries.forEachLibrary((LibraryElement library) { 391 kernelWorldBuilder = libraryLoader.worldBuilder;
392 loadedLibraries.forEachLibrary((LibraryEntity library) {
385 backend.setAnnotations(library); 393 backend.setAnnotations(library);
386 }); 394 });
387 395
388 for (Uri uri in resolvedUriTranslator.disallowedLibraryUris) { 396 for (Uri uri in resolvedUriTranslator.disallowedLibraryUris) {
389 if (loadedLibraries.containsLibrary(uri)) { 397 if (loadedLibraries.containsLibrary(uri)) {
390 Set<String> importChains = computeImportChainsFor(loadedLibraries, uri); 398 Set<String> importChains = computeImportChainsFor(loadedLibraries, uri);
391 reporter.reportInfo( 399 reporter.reportInfo(
392 NO_LOCATION_SPANNABLE, MessageKind.DISALLOWED_LIBRARY_IMPORT, { 400 NO_LOCATION_SPANNABLE, MessageKind.DISALLOWED_LIBRARY_IMPORT, {
393 'uri': uri, 401 'uri': uri,
394 'importChain': importChains 402 'importChain': importChains
(...skipping 1571 matching lines...) Expand 10 before | Expand all | Expand 10 after
1966 if (library != null && library.isSynthesized) { 1974 if (library != null && library.isSynthesized) {
1967 return null; 1975 return null;
1968 } 1976 }
1969 if (library == null && required) { 1977 if (library == null && required) {
1970 throw new SpannableAssertionFailure( 1978 throw new SpannableAssertionFailure(
1971 library, "The library '${uri}' was not found."); 1979 library, "The library '${uri}' was not found.");
1972 } 1980 }
1973 return library; 1981 return library;
1974 } 1982 }
1975 } 1983 }
OLDNEW
« no previous file with comments | « pkg/compiler/lib/src/commandline_options.dart ('k') | pkg/compiler/lib/src/dart2js.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698