| Index: dart/sdk/lib/_internal/compiler/implementation/apiimpl.dart | 
| diff --git a/dart/sdk/lib/_internal/compiler/implementation/apiimpl.dart b/dart/sdk/lib/_internal/compiler/implementation/apiimpl.dart | 
| index e84d45c15b1f15e92a1fdf2b013d2f8646884079..af5da25c6a2e2090b66dc79a4ca84e62ef18912b 100644 | 
| --- a/dart/sdk/lib/_internal/compiler/implementation/apiimpl.dart | 
| +++ b/dart/sdk/lib/_internal/compiler/implementation/apiimpl.dart | 
| @@ -100,23 +100,25 @@ class Compiler extends leg.Compiler { | 
| } | 
|  | 
| leg.Script readScript(Uri uri, [tree.Node node]) { | 
| -    if (uri.scheme == 'dart') uri = translateDartUri(uri, node); | 
| -    var translated = translateUri(uri, node); | 
| -    String text = ""; | 
| -    try { | 
| -      // TODO(ahe): We expect the future to be complete and call value | 
| -      // directly. In effect, we don't support truly asynchronous API. | 
| -      text = provider(translated).value; | 
| -    } catch (exception) { | 
| -      if (node != null) { | 
| -        cancel("$exception", node: node); | 
| -      } else { | 
| -        reportDiagnostic(null, "$exception", api.Diagnostic.ERROR); | 
| -        throw new leg.CompilerCancelledException("$exception"); | 
| +    return fileReadingTask.measure(() { | 
| +      if (uri.scheme == 'dart') uri = translateDartUri(uri, node); | 
| +      var translated = translateUri(uri, node); | 
| +      String text = ""; | 
| +      try { | 
| +        // TODO(ahe): We expect the future to be complete and call value | 
| +        // directly. In effect, we don't support truly asynchronous API. | 
| +        text = provider(translated).value; | 
| +      } catch (exception) { | 
| +        if (node != null) { | 
| +          cancel("$exception", node: node); | 
| +        } else { | 
| +          reportDiagnostic(null, "$exception", api.Diagnostic.ERROR); | 
| +          throw new leg.CompilerCancelledException("$exception"); | 
| +        } | 
| } | 
| -    } | 
| -    SourceFile sourceFile = new SourceFile(translated.toString(), text); | 
| -    return new leg.Script(uri, sourceFile); | 
| +      SourceFile sourceFile = new SourceFile(translated.toString(), text); | 
| +      return new leg.Script(uri, sourceFile); | 
| +    }); | 
| } | 
|  | 
| Uri translateUri(Uri uri, tree.Node node) { | 
| @@ -156,9 +158,14 @@ class Compiler extends leg.Compiler { | 
|  | 
| bool run(Uri uri) { | 
| bool success = super.run(uri); | 
| +    int cumulated = 0; | 
| for (final task in tasks) { | 
| +      cumulated += task.timing; | 
| log('${task.name} took ${task.timing}msec'); | 
| } | 
| +    int total = totalCompileTime.elapsedMilliseconds; | 
| +    log('Total compile-time ${total}msec;' | 
| +        ' unaccounted ${total - cumulated}msec'); | 
| return success; | 
| } | 
|  | 
|  |