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

Side by Side Diff: pkg/compiler/tool/perf.dart

Issue 2735763002: Create ResolutionEnqueuer after library loading. (Closed)
Patch Set: Updated cf. comments. Created 3 years, 9 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 /// An entrypoint used to run portions of dart2js and measure its performance. 5 /// An entrypoint used to run portions of dart2js and measure its performance.
6 library compiler.tool.perf; 6 library compiler.tool.perf;
7 7
8 import 'dart:async'; 8 import 'dart:async';
9 import 'dart:io'; 9 import 'dart:io';
10 10
11 import 'package:compiler/compiler_new.dart'; 11 import 'package:compiler/compiler_new.dart';
12 import 'package:compiler/src/apiimpl.dart'; 12 import 'package:compiler/src/apiimpl.dart';
13 import 'package:compiler/src/compiler.dart'; 13 import 'package:compiler/src/compiler.dart';
14 import 'package:compiler/src/elements/elements.dart'; 14 import 'package:compiler/src/elements/elements.dart';
15 import 'package:compiler/src/common.dart'; 15 import 'package:compiler/src/common.dart';
16 import 'package:compiler/src/diagnostics/diagnostic_listener.dart'; 16 import 'package:compiler/src/diagnostics/diagnostic_listener.dart';
17 import 'package:compiler/src/diagnostics/messages.dart' 17 import 'package:compiler/src/diagnostics/messages.dart'
18 show Message, MessageTemplate; 18 show Message, MessageTemplate;
19 import 'package:compiler/src/enqueue.dart' show ResolutionEnqueuer;
19 import 'package:compiler/src/io/source_file.dart'; 20 import 'package:compiler/src/io/source_file.dart';
20 import 'package:compiler/src/options.dart'; 21 import 'package:compiler/src/options.dart';
21 import 'package:compiler/src/parser/element_listener.dart' show ScannerOptions; 22 import 'package:compiler/src/parser/element_listener.dart' show ScannerOptions;
22 import 'package:compiler/src/parser/node_listener.dart' show NodeListener; 23 import 'package:compiler/src/parser/node_listener.dart' show NodeListener;
23 import 'package:compiler/src/parser/diet_parser_task.dart' show PartialParser; 24 import 'package:compiler/src/parser/diet_parser_task.dart' show PartialParser;
24 import 'package:compiler/src/platform_configuration.dart' as platform; 25 import 'package:compiler/src/platform_configuration.dart' as platform;
25 import 'package:compiler/src/source_file_provider.dart'; 26 import 'package:compiler/src/source_file_provider.dart';
26 import 'package:compiler/src/universe/world_impact.dart' show WorldImpact; 27 import 'package:compiler/src/universe/world_impact.dart' show WorldImpact;
27 import 'package:front_end/src/fasta/parser.dart' show Listener, Parser; 28 import 'package:front_end/src/fasta/parser.dart' show Listener, Parser;
28 import 'package:front_end/src/fasta/scanner.dart' show Token, scan; 29 import 'package:front_end/src/fasta/scanner.dart' show Token, scan;
(...skipping 310 matching lines...) Expand 10 before | Expand all | Expand 10 after
339 340
340 // We subclass compiler to skip phases and stop after creating kernel. 341 // We subclass compiler to skip phases and stop after creating kernel.
341 class MyCompiler extends CompilerImpl { 342 class MyCompiler extends CompilerImpl {
342 MyCompiler(CompilerInput provider, CompilerDiagnostics handler, 343 MyCompiler(CompilerInput provider, CompilerDiagnostics handler,
343 CompilerOptions options) 344 CompilerOptions options)
344 : super(provider, null, handler, options) {} 345 : super(provider, null, handler, options) {}
345 346
346 /// Performs the compilation when all libraries have been loaded. 347 /// Performs the compilation when all libraries have been loaded.
347 void compileLoadedLibraries() => 348 void compileLoadedLibraries() =>
348 selfTask.measureSubtask('KernelCompiler.compileLoadedLibraries', () { 349 selfTask.measureSubtask('KernelCompiler.compileLoadedLibraries', () {
350 ResolutionEnqueuer resolutionEnqueuer = startResolution();
349 WorldImpact mainImpact = computeMain(); 351 WorldImpact mainImpact = computeMain();
350 mirrorUsageAnalyzerTask.analyzeUsage(mainApp); 352 mirrorUsageAnalyzerTask.analyzeUsage(mainApp);
351 353
352 deferredLoadTask.beforeResolution(this); 354 deferredLoadTask.beforeResolution(this);
353 impactStrategy = backend.createImpactStrategy( 355 impactStrategy = backend.createImpactStrategy(
354 supportDeferredLoad: deferredLoadTask.isProgramSplit, 356 supportDeferredLoad: deferredLoadTask.isProgramSplit,
355 supportDumpInfo: options.dumpInfo, 357 supportDumpInfo: options.dumpInfo,
356 supportSerialization: serialization.supportSerialization); 358 supportSerialization: serialization.supportSerialization);
357 359
358 phase = Compiler.PHASE_RESOLVING; 360 phase = Compiler.PHASE_RESOLVING;
359 enqueuer.resolution.applyImpact(mainImpact); 361 resolutionEnqueuer.applyImpact(mainImpact);
360 // Note: we enqueue everything in the program so we measure generating 362 // Note: we enqueue everything in the program so we measure generating
361 // kernel for the entire code, not just what's reachable from main. 363 // kernel for the entire code, not just what's reachable from main.
362 libraryLoader.libraries.forEach((LibraryElement library) { 364 libraryLoader.libraries.forEach((LibraryElement library) {
363 enqueuer.resolution.applyImpact(computeImpactForLibrary(library)); 365 resolutionEnqueuer.applyImpact(computeImpactForLibrary(library));
364 }); 366 });
365 367
366 if (deferredLoadTask.isProgramSplit) { 368 if (deferredLoadTask.isProgramSplit) {
367 enqueuer.resolution 369 resolutionEnqueuer
368 .applyImpact(backend.computeDeferredLoadingImpact()); 370 .applyImpact(backend.computeDeferredLoadingImpact());
369 } 371 }
370 resolveLibraryMetadata(); 372 resolveLibraryMetadata();
371 reporter.log('Resolving...'); 373 reporter.log('Resolving...');
372 processQueue(enqueuer.resolution, mainFunction, libraryLoader.libraries) ; 374 processQueue(resolutionEnqueuer, mainFunction, libraryLoader.libraries);
373 enqueuer.resolution.logSummary(reporter.log); 375 resolutionEnqueuer.logSummary(reporter.log);
374 376
375 (reporter as CompilerDiagnosticReporter) 377 (reporter as CompilerDiagnosticReporter)
376 .reportSuppressedMessagesSummary(); 378 .reportSuppressedMessagesSummary();
377 379
378 if (compilationFailed) { 380 if (compilationFailed) {
379 // TODO(sigmund): more diagnostics? 381 // TODO(sigmund): more diagnostics?
380 print('compilation failed!'); 382 print('compilation failed!');
381 exit(1); 383 exit(1);
382 } 384 }
383 385
384 closeResolution(); 386 closeResolution();
385 var program = (backend as dynamic).kernelTask.program; 387 var program = (backend as dynamic).kernelTask.program;
386 print('total libraries: ${program.libraries.length}'); 388 print('total libraries: ${program.libraries.length}');
387 }); 389 });
388 } 390 }
OLDNEW
« no previous file with comments | « pkg/compiler/lib/src/universe/resolution_world_builder.dart ('k') | tests/compiler/dart2js/kernel/closed_world_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698