| Index: dart/pkg/dart2js_incremental/lib/caching_compiler.dart
|
| diff --git a/dart/pkg/dart2js_incremental/lib/caching_compiler.dart b/dart/pkg/dart2js_incremental/lib/caching_compiler.dart
|
| index afdf92f8ffd7beda7b2ee167f9366fd4c82349a5..9adf0b96e1d37b8e4fbc62d6f32c950ece293cd4 100644
|
| --- a/dart/pkg/dart2js_incremental/lib/caching_compiler.dart
|
| +++ b/dart/pkg/dart2js_incremental/lib/caching_compiler.dart
|
| @@ -6,7 +6,7 @@ part of dart2js_incremental;
|
|
|
| /// Do not call this method directly. It will be made private.
|
| // TODO(ahe): Make this method private.
|
| -Compiler reuseCompiler(
|
| +Future<Compiler> reuseCompiler(
|
| {DiagnosticHandler diagnosticHandler,
|
| CompilerInputProvider inputProvider,
|
| CompilerOutputProvider outputProvider,
|
| @@ -16,7 +16,7 @@ Compiler reuseCompiler(
|
| Uri packageRoot,
|
| bool packagesAreImmutable: false,
|
| Map<String, dynamic> environment,
|
| - bool reuseLibrary(LibraryElement library)}) {
|
| + Future<bool> reuseLibrary(LibraryElement library)}) {
|
| UserTag oldTag = new UserTag('_reuseCompiler').makeCurrent();
|
| if (libraryRoot == null) {
|
| throw 'Missing libraryRoot';
|
| @@ -55,14 +55,16 @@ Compiler reuseCompiler(
|
| print('Unable to reuse compiler.');
|
| }
|
| }
|
| - compiler = new Compiler(
|
| - inputProvider,
|
| - outputProvider,
|
| - diagnosticHandler,
|
| - libraryRoot,
|
| - packageRoot,
|
| - options,
|
| - environment);
|
| + oldTag.makeCurrent();
|
| + return new Future.value(
|
| + new Compiler(
|
| + inputProvider,
|
| + outputProvider,
|
| + diagnosticHandler,
|
| + libraryRoot,
|
| + packageRoot,
|
| + options,
|
| + environment));
|
| } else {
|
| for (final task in compiler.tasks) {
|
| if (task.watch != null) {
|
| @@ -138,13 +140,14 @@ Compiler reuseCompiler(
|
|
|
| if (reuseLibrary == null) {
|
| reuseLibrary = (LibraryElement library) {
|
| - return
|
| + return new Future.value(
|
| library.isPlatformLibrary ||
|
| - (packagesAreImmutable && library.isPackageLibrary);
|
| + (packagesAreImmutable && library.isPackageLibrary));
|
| };
|
| }
|
| - compiler.libraryLoader.reset(reuseLibrary: reuseLibrary);
|
| + return compiler.libraryLoader.resetAsync(reuseLibrary).then((_) {
|
| + oldTag.makeCurrent();
|
| + return compiler;
|
| + });
|
| }
|
| - oldTag.makeCurrent();
|
| - return compiler;
|
| }
|
|
|