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

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

Issue 2935663002: Remove Compiler.commonElements (Closed)
Patch Set: Remove Compiler._commonElements Created 3 years, 6 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) 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 'backend_strategy.dart'; 10 import 'backend_strategy.dart';
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after
81 typedef CompilerDiagnosticReporter MakeReporterFunction( 81 typedef CompilerDiagnosticReporter MakeReporterFunction(
82 Compiler compiler, CompilerOptions options); 82 Compiler compiler, CompilerOptions options);
83 83
84 abstract class Compiler { 84 abstract class Compiler {
85 Measurer get measurer; 85 Measurer get measurer;
86 86
87 final IdGenerator idGenerator = new IdGenerator(); 87 final IdGenerator idGenerator = new IdGenerator();
88 DartTypes types; 88 DartTypes types;
89 FrontendStrategy frontendStrategy; 89 FrontendStrategy frontendStrategy;
90 BackendStrategy backendStrategy; 90 BackendStrategy backendStrategy;
91 CommonElements _commonElements;
92 ElementEnvironment _elementEnvironment; 91 ElementEnvironment _elementEnvironment;
93 CompilerDiagnosticReporter _reporter; 92 CompilerDiagnosticReporter _reporter;
94 CompilerResolution _resolution; 93 CompilerResolution _resolution;
95 ParsingContext _parsingContext; 94 ParsingContext _parsingContext;
96 95
97 ImpactStrategy impactStrategy = const ImpactStrategy(); 96 ImpactStrategy impactStrategy = const ImpactStrategy();
98 97
99 /** 98 /**
100 * Map from token to the first preceding comment token. 99 * Map from token to the first preceding comment token.
101 */ 100 */
(...skipping 13 matching lines...) Expand all
115 114
116 List<Uri> librariesToAnalyzeWhenRun; 115 List<Uri> librariesToAnalyzeWhenRun;
117 116
118 ResolvedUriTranslator get resolvedUriTranslator; 117 ResolvedUriTranslator get resolvedUriTranslator;
119 118
120 LibraryEntity mainApp; 119 LibraryEntity mainApp;
121 FunctionEntity mainFunction; 120 FunctionEntity mainFunction;
122 121
123 DiagnosticReporter get reporter => _reporter; 122 DiagnosticReporter get reporter => _reporter;
124 ElementEnvironment get elementEnvironment => _elementEnvironment; 123 ElementEnvironment get elementEnvironment => _elementEnvironment;
125 CommonElements get commonElements => _commonElements;
126 Resolution get resolution => _resolution; 124 Resolution get resolution => _resolution;
127 ParsingContext get parsingContext => _parsingContext; 125 ParsingContext get parsingContext => _parsingContext;
128 126
129 // TODO(zarah): Remove this map and incorporate compile-time errors 127 // TODO(zarah): Remove this map and incorporate compile-time errors
130 // in the model. 128 // in the model.
131 /// Tracks elements with compile-time errors. 129 /// Tracks elements with compile-time errors.
132 final Map<Entity, List<DiagnosticMessage>> elementsWithCompileTimeErrors = 130 final Map<Entity, List<DiagnosticMessage>> elementsWithCompileTimeErrors =
133 new Map<Entity, List<DiagnosticMessage>>(); 131 new Map<Entity, List<DiagnosticMessage>>();
134 132
135 final Environment environment; 133 final Environment environment;
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
196 _reporter = new CompilerDiagnosticReporter(this, options); 194 _reporter = new CompilerDiagnosticReporter(this, options);
197 } 195 }
198 frontendStrategy = options.loadFromDill 196 frontendStrategy = options.loadFromDill
199 ? new KernelFrontEndStrategy(reporter, environment) 197 ? new KernelFrontEndStrategy(reporter, environment)
200 : new ResolutionFrontEndStrategy(this); 198 : new ResolutionFrontEndStrategy(this);
201 backendStrategy = options.loadFromDill 199 backendStrategy = options.loadFromDill
202 ? new KernelBackendStrategy(this) 200 ? new KernelBackendStrategy(this)
203 : new ElementBackendStrategy(this); 201 : new ElementBackendStrategy(this);
204 _resolution = createResolution(); 202 _resolution = createResolution();
205 _elementEnvironment = frontendStrategy.elementEnvironment; 203 _elementEnvironment = frontendStrategy.elementEnvironment;
206 _commonElements = frontendStrategy.commonElements;
207 types = new Types(_resolution); 204 types = new Types(_resolution);
208 205
209 if (options.verbose) { 206 if (options.verbose) {
210 progress = new Stopwatch()..start(); 207 progress = new Stopwatch()..start();
211 } 208 }
212 209
213 backend = createBackend(); 210 backend = createBackend();
214 enqueuer = backend.makeEnqueuer(); 211 enqueuer = backend.makeEnqueuer();
215 212
216 tasks = [ 213 tasks = [
(...skipping 286 matching lines...) Expand 10 before | Expand all | Expand 10 after
503 /// already created. 500 /// already created.
504 /// 501 ///
505 /// During normal compilation resolution only started once, but through 502 /// During normal compilation resolution only started once, but through
506 /// [analyzeUri] resolution is started repeatedly. 503 /// [analyzeUri] resolution is started repeatedly.
507 ResolutionEnqueuer startResolution() { 504 ResolutionEnqueuer startResolution() {
508 ResolutionEnqueuer resolutionEnqueuer; 505 ResolutionEnqueuer resolutionEnqueuer;
509 if (enqueuer.hasResolution) { 506 if (enqueuer.hasResolution) {
510 resolutionEnqueuer = enqueuer.resolution; 507 resolutionEnqueuer = enqueuer.resolution;
511 } else { 508 } else {
512 resolutionEnqueuer = enqueuer.createResolutionEnqueuer(); 509 resolutionEnqueuer = enqueuer.createResolutionEnqueuer();
513 backend.onResolutionStart(resolutionEnqueuer); 510 backend.onResolutionStart();
514 } 511 }
515 resolutionEnqueuer.addDeferredActions(libraryLoader.pullDeferredActions()); 512 resolutionEnqueuer.addDeferredActions(libraryLoader.pullDeferredActions());
516 return resolutionEnqueuer; 513 return resolutionEnqueuer;
517 } 514 }
518 515
519 /// Performs the compilation when all libraries have been loaded. 516 /// Performs the compilation when all libraries have been loaded.
520 void compileLoadedLibraries(LibraryEntity rootLibrary) => 517 void compileLoadedLibraries(LibraryEntity rootLibrary) =>
521 selfTask.measureSubtask("Compiler.compileLoadedLibraries", () { 518 selfTask.measureSubtask("Compiler.compileLoadedLibraries", () {
522 ResolutionEnqueuer resolutionEnqueuer = startResolution(); 519 ResolutionEnqueuer resolutionEnqueuer = startResolution();
523 WorldImpactBuilderImpl mainImpact = new WorldImpactBuilderImpl(); 520 WorldImpactBuilderImpl mainImpact = new WorldImpactBuilderImpl();
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
557 resolutionEnqueuer 554 resolutionEnqueuer
558 .applyImpact(computeImpactForLibrary(rootLibrary)); 555 .applyImpact(computeImpactForLibrary(rootLibrary));
559 } 556 }
560 if (librariesToAnalyzeWhenRun != null) { 557 if (librariesToAnalyzeWhenRun != null) {
561 for (Uri libraryUri in librariesToAnalyzeWhenRun) { 558 for (Uri libraryUri in librariesToAnalyzeWhenRun) {
562 resolutionEnqueuer.applyImpact(computeImpactForLibrary( 559 resolutionEnqueuer.applyImpact(computeImpactForLibrary(
563 libraryLoader.lookupLibrary(libraryUri))); 560 libraryLoader.lookupLibrary(libraryUri)));
564 } 561 }
565 } 562 }
566 } 563 }
567 if (commonElements.mirrorsLibrary != null && !options.loadFromDill) { 564 if (frontendStrategy.commonElements.mirrorsLibrary != null &&
565 !options.loadFromDill) {
568 // TODO(johnniwinther): Support mirrors from dill. 566 // TODO(johnniwinther): Support mirrors from dill.
569 resolveLibraryMetadata(); 567 resolveLibraryMetadata();
570 } 568 }
571 reporter.log('Resolving...'); 569 reporter.log('Resolving...');
572 570
573 processQueue(resolutionEnqueuer, mainFunction, libraryLoader.libraries, 571 processQueue(resolutionEnqueuer, mainFunction, libraryLoader.libraries,
574 onProgress: showResolutionProgress); 572 onProgress: showResolutionProgress);
575 backend.onResolutionEnd(); 573 backend.onResolutionEnd();
576 resolutionEnqueuer.logSummary(reporter.log); 574 resolutionEnqueuer.logSummary(reporter.log);
577 575
(...skipping 131 matching lines...) Expand 10 before | Expand all | Expand 10 after
709 } 707 }
710 }); 708 });
711 } 709 }
712 return impactBuilder; 710 return impactBuilder;
713 } 711 }
714 712
715 // Resolves metadata on library elements. This is necessary in order to 713 // Resolves metadata on library elements. This is necessary in order to
716 // resolve metadata classes referenced only from metadata on library tags. 714 // resolve metadata classes referenced only from metadata on library tags.
717 // TODO(ahe): Figure out how to do this lazily. 715 // TODO(ahe): Figure out how to do this lazily.
718 void resolveLibraryMetadata() { 716 void resolveLibraryMetadata() {
719 assert(commonElements.mirrorsLibrary != null); 717 assert(frontendStrategy.commonElements.mirrorsLibrary != null);
720 for (LibraryElement library in libraryLoader.libraries) { 718 for (LibraryElement library in libraryLoader.libraries) {
721 if (library.metadata != null) { 719 if (library.metadata != null) {
722 for (MetadataAnnotation metadata in library.metadata) { 720 for (MetadataAnnotation metadata in library.metadata) {
723 metadata.ensureResolved(resolution); 721 metadata.ensureResolved(resolution);
724 } 722 }
725 } 723 }
726 } 724 }
727 } 725 }
728 726
729 /** 727 /**
(...skipping 561 matching lines...) Expand 10 before | Expand all | Expand 10 after
1291 1289
1292 CompilerResolution(this._compiler); 1290 CompilerResolution(this._compiler);
1293 1291
1294 @override 1292 @override
1295 DiagnosticReporter get reporter => _compiler.reporter; 1293 DiagnosticReporter get reporter => _compiler.reporter;
1296 1294
1297 @override 1295 @override
1298 ParsingContext get parsingContext => _compiler.parsingContext; 1296 ParsingContext get parsingContext => _compiler.parsingContext;
1299 1297
1300 @override 1298 @override
1301 CommonElements get commonElements => _compiler.commonElements; 1299 CommonElements get commonElements =>
1300 _compiler.frontendStrategy.commonElements;
1302 1301
1303 @override 1302 @override
1304 Types get types => _compiler.types; 1303 Types get types => _compiler.types;
1305 1304
1306 @override 1305 @override
1307 Target get target => _compiler.backend.target; 1306 Target get target => _compiler.backend.target;
1308 1307
1309 @override 1308 @override
1310 ResolverTask get resolver => _compiler.resolver; 1309 ResolverTask get resolver => _compiler.resolver;
1311 1310
1312 @override 1311 @override
1313 ResolutionEnqueuer get enqueuer => _compiler.enqueuer.resolution; 1312 ResolutionEnqueuer get enqueuer => _compiler.enqueuer.resolution;
1314 1313
1315 @override 1314 @override
1316 CompilerOptions get options => _compiler.options; 1315 CompilerOptions get options => _compiler.options;
1317 1316
1318 @override 1317 @override
1319 IdGenerator get idGenerator => _compiler.idGenerator; 1318 IdGenerator get idGenerator => _compiler.idGenerator;
1320 1319
1321 @override 1320 @override
1322 ConstantEnvironment get constants => _compiler.constants; 1321 ConstantEnvironment get constants => _compiler.constants;
1323 1322
1324 @override 1323 @override
1325 MirrorUsageAnalyzerTask get mirrorUsageAnalyzerTask => 1324 MirrorUsageAnalyzerTask get mirrorUsageAnalyzerTask =>
1326 _compiler.mirrorUsageAnalyzerTask; 1325 _compiler.mirrorUsageAnalyzerTask;
1327 1326
1328 LibraryElement get coreLibrary => _compiler._commonElements.coreLibrary; 1327 LibraryElement get coreLibrary =>
1328 _compiler.frontendStrategy.commonElements.coreLibrary;
1329 1329
1330 @override 1330 @override
1331 bool get wasProxyConstantComputedTestingOnly => _proxyConstant != null; 1331 bool get wasProxyConstantComputedTestingOnly => _proxyConstant != null;
1332 1332
1333 @override 1333 @override
1334 void registerClass(ClassElement cls) { 1334 void registerClass(ClassElement cls) {
1335 enqueuer.worldBuilder.registerClass(cls); 1335 enqueuer.worldBuilder.registerClass(cls);
1336 } 1336 }
1337 1337
1338 @override 1338 @override
(...skipping 243 matching lines...) Expand 10 before | Expand all | Expand 10 after
1582 _ElementScanner(this.scanner); 1582 _ElementScanner(this.scanner);
1583 void scanLibrary(LibraryElement library) => scanner.scanLibrary(library); 1583 void scanLibrary(LibraryElement library) => scanner.scanLibrary(library);
1584 void scanUnit(CompilationUnitElement unit) => scanner.scan(unit); 1584 void scanUnit(CompilationUnitElement unit) => scanner.scan(unit);
1585 } 1585 }
1586 1586
1587 class _EmptyEnvironment implements Environment { 1587 class _EmptyEnvironment implements Environment {
1588 const _EmptyEnvironment(); 1588 const _EmptyEnvironment();
1589 1589
1590 String valueOf(String key) => null; 1590 String valueOf(String key) => null;
1591 } 1591 }
OLDNEW
« no previous file with comments | « pkg/compiler/lib/src/compile_time_constants.dart ('k') | pkg/compiler/lib/src/deferred_load.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698