OLD | NEW |
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 leg_apiimpl; | 5 library leg_apiimpl; |
6 | 6 |
7 import 'dart:async'; | 7 import 'dart:async'; |
8 import 'dart:convert'; | 8 import 'dart:convert'; |
9 | 9 |
10 import 'package:package_config/packages.dart'; | 10 import 'package:package_config/packages.dart'; |
(...skipping 13 matching lines...) Expand all Loading... |
24 import 'io/source_file.dart'; | 24 import 'io/source_file.dart'; |
25 import 'options.dart' show CompilerOptions; | 25 import 'options.dart' show CompilerOptions; |
26 import 'platform_configuration.dart' as platform_configuration; | 26 import 'platform_configuration.dart' as platform_configuration; |
27 import 'resolved_uri_translator.dart'; | 27 import 'resolved_uri_translator.dart'; |
28 import 'script.dart'; | 28 import 'script.dart'; |
29 import 'serialization/system.dart'; | 29 import 'serialization/system.dart'; |
30 | 30 |
31 /// Implements the [Compiler] using a [api.CompilerInput] for supplying the | 31 /// Implements the [Compiler] using a [api.CompilerInput] for supplying the |
32 /// sources. | 32 /// sources. |
33 class CompilerImpl extends Compiler { | 33 class CompilerImpl extends Compiler { |
| 34 final Measurer measurer; |
34 api.CompilerInput provider; | 35 api.CompilerInput provider; |
35 api.CompilerDiagnostics handler; | 36 api.CompilerDiagnostics handler; |
36 Packages packages; | 37 Packages packages; |
37 | 38 |
38 bool get mockableLibraryUsed => resolvedUriTranslator.isSet | 39 bool get mockableLibraryUsed => resolvedUriTranslator.isSet |
39 ? resolvedUriTranslator.mockableLibraryUsed | 40 ? resolvedUriTranslator.mockableLibraryUsed |
40 : false; | 41 : false; |
41 | 42 |
42 ForwardingResolvedUriTranslator resolvedUriTranslator; | 43 ForwardingResolvedUriTranslator resolvedUriTranslator; |
43 | 44 |
44 GenericTask userHandlerTask; | 45 GenericTask userHandlerTask; |
45 GenericTask userProviderTask; | 46 GenericTask userProviderTask; |
46 GenericTask userPackagesDiscoveryTask; | 47 GenericTask userPackagesDiscoveryTask; |
47 | 48 |
48 Uri get libraryRoot => options.platformConfigUri.resolve("."); | 49 Uri get libraryRoot => options.platformConfigUri.resolve("."); |
49 | 50 |
50 CompilerImpl(this.provider, api.CompilerOutput outputProvider, this.handler, | 51 CompilerImpl(this.provider, api.CompilerOutput outputProvider, this.handler, |
51 CompilerOptions options, | 52 CompilerOptions options, |
52 {MakeBackendFuncion makeBackend, MakeReporterFunction makeReporter}) | 53 {MakeBackendFuncion makeBackend, MakeReporterFunction makeReporter}) |
53 : resolvedUriTranslator = new ForwardingResolvedUriTranslator(), | 54 // NOTE: allocating measurer is done upfront to ensure the wallclock is |
| 55 // started before other computations. |
| 56 : measurer = new Measurer(enableTaskMeasurements: options.verbose), |
| 57 resolvedUriTranslator = new ForwardingResolvedUriTranslator(), |
54 super( | 58 super( |
55 options: options, | 59 options: options, |
56 outputProvider: outputProvider, | 60 outputProvider: outputProvider, |
57 environment: new _Environment(options.environment), | 61 environment: new _Environment(options.environment), |
58 makeBackend: makeBackend, | 62 makeBackend: makeBackend, |
59 makeReporter: makeReporter) { | 63 makeReporter: makeReporter) { |
60 _Environment env = environment; | 64 _Environment env = environment; |
61 env.compiler = this; | 65 env.compiler = this; |
62 tasks.addAll([ | 66 tasks.addAll([ |
63 userHandlerTask = new GenericTask('Diagnostic handler', this), | 67 userHandlerTask = new GenericTask('Diagnostic handler', measurer), |
64 userProviderTask = new GenericTask('Input provider', this), | 68 userProviderTask = new GenericTask('Input provider', measurer), |
65 userPackagesDiscoveryTask = new GenericTask('Package discovery', this), | 69 userPackagesDiscoveryTask = |
| 70 new GenericTask('Package discovery', measurer), |
66 ]); | 71 ]); |
67 } | 72 } |
68 | 73 |
69 void log(message) { | 74 void log(message) { |
70 callUserHandler( | 75 callUserHandler( |
71 null, null, null, null, message, api.Diagnostic.VERBOSE_INFO); | 76 null, null, null, null, message, api.Diagnostic.VERBOSE_INFO); |
72 } | 77 } |
73 | 78 |
74 /** | 79 /** |
75 * Reads the script designated by [readableUri]. | 80 * Reads the script designated by [readableUri]. |
(...skipping 314 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
390 } | 395 } |
391 } | 396 } |
392 | 397 |
393 /// For every 'dart:' library, a corresponding environment variable is set | 398 /// For every 'dart:' library, a corresponding environment variable is set |
394 /// to "true". The environment variable's name is the concatenation of | 399 /// to "true". The environment variable's name is the concatenation of |
395 /// this prefix and the name (without the 'dart:'. | 400 /// this prefix and the name (without the 'dart:'. |
396 /// | 401 /// |
397 /// For example 'dart:html' has the environment variable 'dart.library.html' set | 402 /// For example 'dart:html' has the environment variable 'dart.library.html' set |
398 /// to "true". | 403 /// to "true". |
399 const String _dartLibraryEnvironmentPrefix = 'dart.library.'; | 404 const String _dartLibraryEnvironmentPrefix = 'dart.library.'; |
OLD | NEW |