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

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

Issue 586173002: Make binstubs run snapshots directly when possible. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Revise! Created 6 years, 3 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
Index: sdk/lib/_internal/pub_generated/lib/src/barback/asset_environment.dart
diff --git a/sdk/lib/_internal/pub_generated/lib/src/barback/asset_environment.dart b/sdk/lib/_internal/pub_generated/lib/src/barback/asset_environment.dart
index df75afd35f965a1b3efc08b888b54d52ae3e8181..6884f836d1b0a063df3bc63c9251a69c32aabdcb 100644
--- a/sdk/lib/_internal/pub_generated/lib/src/barback/asset_environment.dart
+++ b/sdk/lib/_internal/pub_generated/lib/src/barback/asset_environment.dart
@@ -112,35 +112,109 @@ class AssetEnvironment {
(_) =>
BarbackServer.bind(this, _hostname, 0, package: package, rootDirectory: "bin"));
}
- Future precompileExecutables(String packageName, String directory,
- {Iterable<AssetId> executableIds}) {
- if (executableIds == null) {
- executableIds = graph.packages[packageName].executableIds;
- }
- log.fine("executables for $packageName: $executableIds");
- if (executableIds.isEmpty) return null;
- var package = graph.packages[packageName];
- return servePackageBinDirectory(packageName).then((server) {
- return waitAndPrintErrors(executableIds.map((id) {
- var basename = path.url.basename(id.path);
- var snapshotPath = path.join(directory, "$basename.snapshot");
- return runProcess(
- Platform.executable,
- [
- '--snapshot=$snapshotPath',
- server.url.resolve(basename).toString()]).then((result) {
- if (result.success) {
- log.message("Precompiled ${_formatExecutable(id)}.");
+ Future<Map<String, String>> precompileExecutables(String packageName,
+ String directory, {Iterable<AssetId> executableIds}) {
+ final completer0 = new Completer();
+ scheduleMicrotask(() {
+ try {
+ join0() {
+ log.fine("Executables for ${packageName}: ${executableIds}");
+ join1() {
+ var package = graph.packages[packageName];
+ servePackageBinDirectory(packageName).then((x0) {
+ try {
+ var server = x0;
+ join2(x1) {
+ completer0.complete(null);
+ }
+ finally0(cont0, v0) {
+ server.close();
+ cont0(v0);
+ }
+ catch0(e1) {
+ finally0(join2, null);
+ }
+ try {
+ var precompiled = {};
+ waitAndPrintErrors(executableIds.map(((id) {
+ final completer0 = new Completer();
+ scheduleMicrotask(() {
+ try {
+ var basename = path.url.basename(id.path);
+ var snapshotPath =
+ path.join(directory, "${basename}.snapshot");
+ runProcess(
+ Platform.executable,
+ [
+ '--snapshot=${snapshotPath}',
+ server.url.resolve(basename).toString()]).then((x0) {
+ try {
+ var result = x0;
+ join0() {
+ completer0.complete(null);
+ }
+ if (result.success) {
+ log.message(
+ "Precompiled ${_formatExecutable(id)}.");
+ precompiled[path.withoutExtension(basename)] =
+ snapshotPath;
+ join0();
+ } else {
+ completer0.completeError(
+ new ApplicationException(
+ log.yellow("Failed to precompile ${_formatExecutable(id)}:\n") +
+ result.stderr.join('\n')));
+ }
+ } catch (e0) {
+ completer0.completeError(e0);
+ }
+ }, onError: (e1) {
+ completer0.completeError(e1);
+ });
+ } catch (e2) {
+ completer0.completeError(e2);
+ }
+ });
+ return completer0.future;
+ }))).then((x2) {
+ try {
+ x2;
+ finally0((v1) {
+ completer0.complete(v1);
+ }, precompiled);
+ } catch (e2) {
+ catch0(e2);
+ }
+ }, onError: (e3) {
+ catch0(e3);
+ });
+ } catch (e4) {
+ catch0(e4);
+ }
+ } catch (e0) {
+ completer0.completeError(e0);
+ }
+ }, onError: (e5) {
+ completer0.completeError(e5);
+ });
+ }
+ if (executableIds.isEmpty) {
+ completer0.complete([]);
} else {
- throw new ApplicationException(
- log.yellow("Failed to precompile " "${_formatExecutable(id)}:\n") +
- result.stderr.join('\n'));
+ join1();
}
- });
- })).whenComplete(() {
- server.close();
- });
+ }
+ if (executableIds == null) {
+ executableIds = graph.packages[packageName].executableIds;
+ join0();
+ } else {
+ join0();
+ }
+ } catch (e6) {
+ completer0.completeError(e6);
+ }
});
+ return completer0.future;
}
String _formatExecutable(AssetId id) =>
log.bold("${id.package}:${path.basenameWithoutExtension(id.path)}");

Powered by Google App Engine
This is Rietveld 408576698