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

Side by Side Diff: pkg/barback/lib/src/package_graph.dart

Issue 36213002: Only run at most 10 transformers at once in barback. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 7 years, 2 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 | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2013, 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 barback.package_graph; 5 library barback.package_graph;
6 6
7 import 'dart:async'; 7 import 'dart:async';
8 8
9 import 'asset_cascade.dart'; 9 import 'asset_cascade.dart';
10 import 'asset_id.dart'; 10 import 'asset_id.dart';
11 import 'asset_node.dart'; 11 import 'asset_node.dart';
12 import 'asset_set.dart'; 12 import 'asset_set.dart';
13 import 'barback_logger.dart'; 13 import 'barback_logger.dart';
14 import 'build_result.dart'; 14 import 'build_result.dart';
15 import 'errors.dart'; 15 import 'errors.dart';
16 import 'package_provider.dart'; 16 import 'package_provider.dart';
17 import 'pool.dart';
17 import 'transformer.dart'; 18 import 'transformer.dart';
18 import 'utils.dart'; 19 import 'utils.dart';
19 20
20 /// The collection of [AssetCascade]s for an entire application. 21 /// The collection of [AssetCascade]s for an entire application.
21 /// 22 ///
22 /// This tracks each package's [AssetCascade] and routes asset requests between 23 /// This tracks each package's [AssetCascade] and routes asset requests between
23 /// them. 24 /// them.
24 class PackageGraph { 25 class PackageGraph {
25 /// The provider that exposes asset and package information. 26 /// The provider that exposes asset and package information.
26 final PackageProvider provider; 27 final PackageProvider provider;
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
58 /// emitted through the [results] stream's error channel. 59 /// emitted through the [results] stream's error channel.
59 Stream<BarbackException> get errors => _errors; 60 Stream<BarbackException> get errors => _errors;
60 Stream<BarbackException> _errors; 61 Stream<BarbackException> _errors;
61 62
62 /// The most recent error emitted from a cascade's result stream. 63 /// The most recent error emitted from a cascade's result stream.
63 /// 64 ///
64 /// This is used to pipe an unexpected error from a build to the resulting 65 /// This is used to pipe an unexpected error from a build to the resulting
65 /// [Future] returned by [getAllAssets]. 66 /// [Future] returned by [getAllAssets].
66 var _lastUnexpectedError; 67 var _lastUnexpectedError;
67 68
69 // TODO(nweiz): Allow transformers to declare themselves as "lightweight" or
70 // "heavyweight" and adjust their restrictions appropriately. Simple
71 // transformers may be very efficient to run in parallel, whereas dart2js uses
72 // a lot of memory and should be run more sequentially.
73 /// A pool that controls how many transformers may be applied at once.
74 final Pool transformerPool = new Pool(10);
75
68 /// Creates a new [PackageGraph] that will transform assets in all packages 76 /// Creates a new [PackageGraph] that will transform assets in all packages
69 /// made available by [provider]. 77 /// made available by [provider].
70 PackageGraph(this.provider, {BarbackLogger logger}) 78 PackageGraph(this.provider, {BarbackLogger logger})
71 : _logger = logger != null ? logger : new BarbackLogger() { 79 : _logger = logger != null ? logger : new BarbackLogger() {
72 for (var package in provider.packages) { 80 for (var package in provider.packages) {
73 var cascade = new AssetCascade(this, package); 81 var cascade = new AssetCascade(this, package);
74 // The initial result for each cascade is "success" since the cascade 82 // The initial result for each cascade is "success" since the cascade
75 // doesn't start building until some source in that graph is updated. 83 // doesn't start building until some source in that graph is updated.
76 _cascadeResults[package] = new BuildResult.success(); 84 _cascadeResults[package] = new BuildResult.success();
77 _cascades[package] = cascade; 85 _cascades[package] = cascade;
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after
165 if (cascade == null) throw new ArgumentError("Unknown package $package."); 173 if (cascade == null) throw new ArgumentError("Unknown package $package.");
166 cascade.removeSources(ids); 174 cascade.removeSources(ids);
167 }); 175 });
168 } 176 }
169 177
170 void updateTransformers(String package, 178 void updateTransformers(String package,
171 Iterable<Iterable<Transformer>> transformers) { 179 Iterable<Iterable<Transformer>> transformers) {
172 _cascades[package].updateTransformers(transformers); 180 _cascades[package].updateTransformers(transformers);
173 } 181 }
174 } 182 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698