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

Unified Diff: sdk/lib/_internal/pub/lib/src/barback/asset_environment.dart

Issue 311003002: Add instrumentation for tracking how long it takes barback to start. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: code review Created 6 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | sdk/lib/_internal/pub/lib/src/barback/barback_server.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: sdk/lib/_internal/pub/lib/src/barback/asset_environment.dart
diff --git a/sdk/lib/_internal/pub/lib/src/barback/asset_environment.dart b/sdk/lib/_internal/pub/lib/src/barback/asset_environment.dart
index 04acfa4439a89876a2478c50ccc1ad0c93802209..afc41fcf9501606c9de7d30d6a10c05076f7c202 100644
--- a/sdk/lib/_internal/pub/lib/src/barback/asset_environment.dart
+++ b/sdk/lib/_internal/pub/lib/src/barback/asset_environment.dart
@@ -350,94 +350,96 @@ class AssetEnvironment {
/// Returns a [Future] that completes once all inputs and transformers are
/// loaded.
Future _load({bool useDart2JS}) {
- // If the entrypoint package manually configures the dart2js
- // transformer, don't include it in the built-in transformer list.
- //
- // TODO(nweiz): if/when we support more built-in transformers, make
- // this more general.
- var containsDart2JS = graph.entrypoint.root.pubspec.transformers
- .any((transformers) => transformers
- .any((id) => id.package == '\$dart2js'));
-
- if (!containsDart2JS && useDart2JS) {
- _builtInTransformers.addAll([
- new Dart2JSTransformer(this, mode),
- new DartForwardingTransformer(mode)
- ]);
- }
-
- // "$pub" is a psuedo-package that allows pub's transformer-loading
- // infrastructure to share code with pub proper. We provide it only during
- // the initial transformer loading process.
- var dartPath = assetPath('dart');
- var pubSources = listDir(dartPath, recursive: true)
- // Don't include directories.
- .where((file) => path.extension(file) == ".dart")
- .map((library) {
- var idPath = path.join('lib', path.relative(library, from: dartPath));
- return new AssetId('\$pub', path.toUri(idPath).toString());
- });
+ return log.progress("Initializing barback", () {
+ // If the entrypoint package manually configures the dart2js
+ // transformer, don't include it in the built-in transformer list.
+ //
+ // TODO(nweiz): if/when we support more built-in transformers, make
+ // this more general.
+ var containsDart2JS = graph.entrypoint.root.pubspec.transformers
+ .any((transformers) => transformers
+ .any((id) => id.package == '\$dart2js'));
+
+ if (!containsDart2JS && useDart2JS) {
+ _builtInTransformers.addAll([
+ new Dart2JSTransformer(this, mode),
+ new DartForwardingTransformer(mode)
+ ]);
+ }
- // "$sdk" is a pseudo-package that allows the dart2js transformer to find
- // the Dart core libraries without hitting the file system directly. This
- // ensures they work with source maps.
- var libPath = path.join(sdk.rootDirectory, "lib");
- var sdkSources = listDir(libPath, recursive: true)
- .where((file) => path.extension(file) == ".dart")
- .map((file) {
- var idPath = path.join("lib",
- path.relative(file, from: sdk.rootDirectory));
- return new AssetId('\$sdk', path.toUri(idPath).toString());
- });
+ // "$pub" is a psuedo-package that allows pub's transformer-loading
+ // infrastructure to share code with pub proper. We provide it only during
+ // the initial transformer loading process.
+ var dartPath = assetPath('dart');
+ var pubSources = listDir(dartPath, recursive: true)
+ // Don't include directories.
+ .where((file) => path.extension(file) == ".dart")
+ .map((library) {
+ var idPath = path.join('lib', path.relative(library, from: dartPath));
+ return new AssetId('\$pub', path.toUri(idPath).toString());
+ });
- // Bind a server that we can use to load the transformers.
- var transformerServer;
- return BarbackServer.bind(this, _hostname, 0, null).then((server) {
- transformerServer = server;
+ // "$sdk" is a pseudo-package that allows the dart2js transformer to find
+ // the Dart core libraries without hitting the file system directly. This
+ // ensures they work with source maps.
+ var libPath = path.join(sdk.rootDirectory, "lib");
+ var sdkSources = listDir(libPath, recursive: true)
+ .where((file) => path.extension(file) == ".dart")
+ .map((file) {
+ var idPath = path.join("lib",
+ path.relative(file, from: sdk.rootDirectory));
+ return new AssetId('\$sdk', path.toUri(idPath).toString());
+ });
- var errorStream = barback.errors.map((error) {
- // Even most normally non-fatal barback errors should take down pub if
- // they happen during the initial load process.
- if (error is! AssetLoadException) throw error;
+ // Bind a server that we can use to load the transformers.
+ var transformerServer;
+ return BarbackServer.bind(this, _hostname, 0, null).then((server) {
+ transformerServer = server;
- log.error(log.red(error.message));
- log.fine(error.stackTrace.terse);
- });
+ var errorStream = barback.errors.map((error) {
+ // Even most normally non-fatal barback errors should take down pub if
+ // they happen during the initial load process.
+ if (error is! AssetLoadException) throw error;
- return _withStreamErrors(() {
- return log.progress("Loading source assets", () {
- barback.updateSources(pubSources);
- barback.updateSources(sdkSources);
- return _provideSources();
+ log.error(log.red(error.message));
+ log.fine(error.stackTrace.terse);
});
- }, [errorStream, barback.results]);
- }).then((_) {
- log.fine("Provided sources.");
- var completer = new Completer();
-
- var errorStream = barback.errors.map((error) {
- // Now that we're loading transformers, errors they log shouldn't be
- // fatal, since we're starting to run them on real user assets which may
- // have e.g. syntax errors. If an error would cause a transformer to
- // fail to load, the load failure will cause us to exit.
- if (error is! TransformerException) throw error;
-
- var message = error.error.toString();
- if (error.stackTrace != null) {
- message += "\n" + error.stackTrace.terse.toString();
- }
- _log(new LogEntry(error.transform, error.transform.primaryId,
- LogLevel.ERROR, message, null));
- });
-
- return _withStreamErrors(() {
- return loadAllTransformers(this, transformerServer).then((_) {
- log.fine("Loaded transformers.");
- return transformerServer.close();
+ return _withStreamErrors(() {
+ return log.progress("Loading source assets", () {
+ barback.updateSources(pubSources);
+ barback.updateSources(sdkSources);
+ return _provideSources();
+ });
+ }, [errorStream, barback.results]);
+ }).then((_) {
+ log.fine("Provided sources.");
+ var completer = new Completer();
+
+ var errorStream = barback.errors.map((error) {
+ // Now that we're loading transformers, errors they log shouldn't be
+ // fatal, since we're starting to run them on real user assets which
+ // may have e.g. syntax errors. If an error would cause a transformer
+ // to fail to load, the load failure will cause us to exit.
+ if (error is! TransformerException) throw error;
+
+ var message = error.error.toString();
+ if (error.stackTrace != null) {
+ message += "\n" + error.stackTrace.terse.toString();
+ }
+
+ _log(new LogEntry(error.transform, error.transform.primaryId,
+ LogLevel.ERROR, message, null));
});
- }, [errorStream, barback.results, transformerServer.results]);
- }).then((_) => barback.removeSources(pubSources));
+
+ return _withStreamErrors(() {
+ return log.progress("Loading transformers", () {
+ return loadAllTransformers(this, transformerServer)
+ .then((_) => transformerServer.close());
+ }, fine: true);
+ }, [errorStream, barback.results, transformerServer.results]);
+ }).then((_) => barback.removeSources(pubSources));
+ }, fine: true);
}
/// Provides the public source assets in the environment to barback.
« no previous file with comments | « no previous file | sdk/lib/_internal/pub/lib/src/barback/barback_server.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698