Only compute canonical names and clean new libraries

analysis-server-cold-analysis reduced from
~70 seconds to ~46 seconds.

Change-Id: I6e793f292beceda32817675625df90cd003bc19c
Reviewed-on: https://dart-review.googlesource.com/70264
Commit-Queue: Jens Johansen <jensj@google.com>
Reviewed-by: Kevin Millikin <kmillikin@google.com>
This commit is contained in:
Jens Johansen 2018-08-20 08:14:49 +00:00 committed by commit-bot@chromium.org
parent 3aa40c9625
commit 4179fbcec7
2 changed files with 13 additions and 5 deletions

View file

@ -245,9 +245,13 @@ class FrontEndCompiler {
}
});
// TODO(scheglov) Only for new libraries?
_component.computeCanonicalNames();
_component.accept(new _ShadowCleaner());
_ShadowCleaner cleaner = new _ShadowCleaner();
for (var library in _component.libraries) {
if (!_results.containsKey(library.importUri)) {
_component.computeCanonicalNamesForLibrary(library);
library.accept(cleaner);
}
}
_logger.run('Compute dependencies', _computeDependencies);

View file

@ -5353,11 +5353,15 @@ class Component extends TreeNode {
void computeCanonicalNames() {
for (var library in libraries) {
root.getChildFromUri(library.importUri).bindTo(library.reference);
library.computeCanonicalNames();
computeCanonicalNamesForLibrary(library);
}
}
void computeCanonicalNamesForLibrary(Library library) {
root.getChildFromUri(library.importUri).bindTo(library.reference);
library.computeCanonicalNames();
}
void unbindCanonicalNames() {
root.unbindAll();
}