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

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

Issue 2000323006: Make CompilerTask independent of compiler. (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Created 4 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 EventSink, Future; 7 import 'dart:async' show EventSink, Future;
8 8
9 import '../compiler_new.dart' as api; 9 import '../compiler_new.dart' as api;
10 import 'cache_strategy.dart' show CacheStrategy; 10 import 'cache_strategy.dart' show CacheStrategy;
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
83 import 'universe/world_impact.dart' show ImpactStrategy, WorldImpact; 83 import 'universe/world_impact.dart' show ImpactStrategy, WorldImpact;
84 import 'util/util.dart' show Link, Setlet; 84 import 'util/util.dart' show Link, Setlet;
85 import 'world.dart' show World; 85 import 'world.dart' show World;
86 86
87 typedef Backend MakeBackendFuncion(Compiler compiler); 87 typedef Backend MakeBackendFuncion(Compiler compiler);
88 88
89 typedef CompilerDiagnosticReporter MakeReporterFunction( 89 typedef CompilerDiagnosticReporter MakeReporterFunction(
90 Compiler compiler, CompilerOptions options); 90 Compiler compiler, CompilerOptions options);
91 91
92 abstract class Compiler implements LibraryLoaderListener { 92 abstract class Compiler implements LibraryLoaderListener {
93 /// Helper instance for measurements in [CompilerTask]. 93 Measurer get measurer;
94 ///
95 /// Note: MUST be first field to ensure [Measurer.wallclock] is started
96 /// before other computations.
97 final Measurer measurer = new Measurer();
98 94
99 final IdGenerator idGenerator = new IdGenerator(); 95 final IdGenerator idGenerator = new IdGenerator();
100 World world; 96 World world;
101 Types types; 97 Types types;
102 _CompilerCoreTypes _coreTypes; 98 _CompilerCoreTypes _coreTypes;
103 CompilerDiagnosticReporter _reporter; 99 CompilerDiagnosticReporter _reporter;
104 _CompilerResolution _resolution; 100 _CompilerResolution _resolution;
105 ParsingContext _parsingContext; 101 ParsingContext _parsingContext;
106 102
107 final CacheStrategy cacheStrategy; 103 final CacheStrategy cacheStrategy;
(...skipping 134 matching lines...) Expand 10 before | Expand all | Expand 10 after
242 ParserTask parser; 238 ParserTask parser;
243 PatchParserTask patchParser; 239 PatchParserTask patchParser;
244 LibraryLoaderTask libraryLoader; 240 LibraryLoaderTask libraryLoader;
245 SerializationTask serialization; 241 SerializationTask serialization;
246 ResolverTask resolver; 242 ResolverTask resolver;
247 closureMapping.ClosureTask closureToClassMapper; 243 closureMapping.ClosureTask closureToClassMapper;
248 TypeCheckerTask checker; 244 TypeCheckerTask checker;
249 ti.TypesTask typesTask; 245 ti.TypesTask typesTask;
250 Backend backend; 246 Backend backend;
251 247
252 GenericTask reuseLibraryTask;
Siggi Cherem (dart-lang) 2016/05/25 01:45:18 now measured as a subtask of the loader
253
254 GenericTask selfTask; 248 GenericTask selfTask;
255 249
256 /// The constant environment for the frontend interpretation of compile-time 250 /// The constant environment for the frontend interpretation of compile-time
257 /// constants. 251 /// constants.
258 ConstantEnvironment constants; 252 ConstantEnvironment constants;
259 253
260 EnqueueTask enqueuer; 254 EnqueueTask enqueuer;
261 DeferredLoadTask deferredLoadTask; 255 DeferredLoadTask deferredLoadTask;
262 MirrorUsageAnalyzerTask mirrorUsageAnalyzerTask; 256 MirrorUsageAnalyzerTask mirrorUsageAnalyzerTask;
263 DumpInfoTask dumpInfoTask; 257 DumpInfoTask dumpInfoTask;
264 258
265 /// A customizable filter that is applied to enqueued work items. 259 /// A customizable filter that is applied to enqueued work items.
266 QueueFilter enqueuerFilter = new QueueFilter(); 260 QueueFilter enqueuerFilter = new QueueFilter();
267 261
268 static const String CREATE_INVOCATION_MIRROR = 'createInvocationMirror';
Siggi Cherem (dart-lang) 2016/05/25 01:45:18 only used in one place, no reason to have it here.
269
270 bool enabledRuntimeType = false; 262 bool enabledRuntimeType = false;
271 bool enabledFunctionApply = false; 263 bool enabledFunctionApply = false;
272 bool enabledInvokeOn = false; 264 bool enabledInvokeOn = false;
273 bool hasIsolateSupport = false; 265 bool hasIsolateSupport = false;
274 266
275 bool get hasCrashed => _reporter.hasCrashed; 267 bool get hasCrashed => _reporter.hasCrashed;
276 268
277 Stopwatch progress; 269 Stopwatch progress;
278 270
279 bool get shouldPrintProgress { 271 bool get shouldPrintProgress {
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
337 } 329 }
338 } 330 }
339 331
340 if (options.dumpInfo && options.useStartupEmitter) { 332 if (options.dumpInfo && options.useStartupEmitter) {
341 throw new ArgumentError( 333 throw new ArgumentError(
342 '--dump-info is not supported with the fast startup emitter'); 334 '--dump-info is not supported with the fast startup emitter');
343 } 335 }
344 336
345 tasks = [ 337 tasks = [
346 dietParser = 338 dietParser =
347 new DietParserTask(this, options, idGenerator, backend, reporter), 339 new DietParserTask(options, idGenerator, backend, reporter, measurer),
Siggi Cherem (dart-lang) 2016/05/25 01:45:18 now diet parser and scanner below no longer need a
348 scanner = createScannerTask(), 340 scanner = createScannerTask(),
349 serialization = new SerializationTask(this), 341 serialization = new SerializationTask(this),
350 libraryLoader = new LibraryLoaderTask( 342 libraryLoader = new LibraryLoaderTask(
351 this, 343 this,
352 this.resolvedUriTranslator, 344 this.resolvedUriTranslator,
353 new _ScriptLoader(this), 345 new _ScriptLoader(this),
354 new _ElementScanner(scanner), 346 new _ElementScanner(scanner),
355 this.serialization, 347 this.serialization,
356 this, 348 this,
357 environment), 349 environment),
358 parser = new ParserTask(this, options), 350 parser = new ParserTask(this, options),
359 patchParser = new PatchParserTask(this, options), 351 patchParser = new PatchParserTask(this, options),
360 resolver = createResolverTask(), 352 resolver = createResolverTask(),
361 closureToClassMapper = new closureMapping.ClosureTask(this), 353 closureToClassMapper = new closureMapping.ClosureTask(this),
362 checker = new TypeCheckerTask(this), 354 checker = new TypeCheckerTask(this),
363 typesTask = new ti.TypesTask(this), 355 typesTask = new ti.TypesTask(this),
364 constants = backend.constantCompilerTask, 356 constants = backend.constantCompilerTask,
365 deferredLoadTask = new DeferredLoadTask(this), 357 deferredLoadTask = new DeferredLoadTask(this),
366 mirrorUsageAnalyzerTask = new MirrorUsageAnalyzerTask(this), 358 mirrorUsageAnalyzerTask = new MirrorUsageAnalyzerTask(this),
367 enqueuer = backend.makeEnqueuer(), 359 enqueuer = backend.makeEnqueuer(),
368 dumpInfoTask = new DumpInfoTask(this), 360 dumpInfoTask = new DumpInfoTask(this),
369 reuseLibraryTask = new GenericTask('Reuse library', this), 361 selfTask = new GenericTask('self', measurer),
370 selfTask = new GenericTask('self', this),
371 ]; 362 ];
372 if (options.resolveOnly) { 363 if (options.resolveOnly) {
373 serialization.supportSerialization = true; 364 serialization.supportSerialization = true;
374 } 365 }
375 366
376 _parsingContext = 367 _parsingContext =
377 new ParsingContext(reporter, options, parser, patchParser, backend); 368 new ParsingContext(reporter, options, parser, patchParser, backend);
378 369
379 tasks.addAll(backend.tasks); 370 tasks.addAll(backend.tasks);
380 } 371 }
381 372
382 /// Creates the scanner task. 373 /// Creates the scanner task.
383 /// 374 ///
384 /// Override this to mock the scanner for testing. 375 /// Override this to mock the scanner for testing.
385 ScannerTask createScannerTask() => new ScannerTask(this, dietParser, 376 ScannerTask createScannerTask() =>
386 preserveComments: options.preserveComments, commentMap: commentMap); 377 new ScannerTask(dietParser, reporter, measurer,
378 preserveComments: options.preserveComments, commentMap: commentMap);
387 379
388 /// Creates the resolver task. 380 /// Creates the resolver task.
389 /// 381 ///
390 /// Override this to mock the resolver for testing. 382 /// Override this to mock the resolver for testing.
391 ResolverTask createResolverTask() { 383 ResolverTask createResolverTask() {
392 return new ResolverTask(this, backend.constantCompilerTask); 384 return new ResolverTask(this, backend.constantCompilerTask);
393 } 385 }
394 386
395 Universe get resolverWorld => enqueuer.resolution.universe; 387 Universe get resolverWorld => enqueuer.resolution.universe;
396 Universe get codegenWorld => enqueuer.codegen.universe; 388 Universe get codegenWorld => enqueuer.codegen.universe;
(...skipping 1719 matching lines...) Expand 10 before | Expand all | Expand 10 after
2116 _ElementScanner(this.scanner); 2108 _ElementScanner(this.scanner);
2117 void scanLibrary(LibraryElement library) => scanner.scanLibrary(library); 2109 void scanLibrary(LibraryElement library) => scanner.scanLibrary(library);
2118 void scanUnit(CompilationUnitElement unit) => scanner.scan(unit); 2110 void scanUnit(CompilationUnitElement unit) => scanner.scan(unit);
2119 } 2111 }
2120 2112
2121 class _EmptyEnvironment implements Environment { 2113 class _EmptyEnvironment implements Environment {
2122 const _EmptyEnvironment(); 2114 const _EmptyEnvironment();
2123 2115
2124 String valueOf(String key) => null; 2116 String valueOf(String key) => null;
2125 } 2117 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698