Chromium Code Reviews| Index: pkg/analyzer/lib/src/dart/analysis/driver.dart |
| diff --git a/pkg/analyzer/lib/src/dart/analysis/driver.dart b/pkg/analyzer/lib/src/dart/analysis/driver.dart |
| index 045d9c60f578ad4ba21cf7d3669696a66016a7db..8439bcc033aaf947c3e599f035cea398a5a7072b 100644 |
| --- a/pkg/analyzer/lib/src/dart/analysis/driver.dart |
| +++ b/pkg/analyzer/lib/src/dart/analysis/driver.dart |
| @@ -126,6 +126,12 @@ class AnalysisDriver { |
| final _filesToAnalyze = new LinkedHashSet<String>(); |
| /** |
| + * The mapping of [Uri]s to the mapping of textual URIs to the [Source] |
| + * that correspond in the current [_sourceFactory]. |
|
Paul Berry
2016/10/24 12:00:48
I'm having trouble parsing this comment. Consider
scheglov
2016/10/24 17:51:34
Done.
Thank you.
|
| + */ |
| + final _uriResolutionCache = <Uri, Map<String, Source>>{}; |
| + |
| + /** |
| * The current file state. |
| * |
| * It maps file paths to the MD5 hash of the file content. |
| @@ -807,7 +813,9 @@ class _File { |
| * Return the [_File] for the [uri] referenced in this file. |
| */ |
| _File resolveUri(String uri) { |
| - Source uriSource = driver._sourceFactory.resolveUri(source, uri); |
| + Source uriSource = driver._uriResolutionCache |
| + .putIfAbsent(this.uri, () => <String, Source>{}) |
| + .putIfAbsent(uri, () => driver._sourceFactory.resolveUri(source, uri)); |
|
Paul Berry
2016/10/24 12:00:48
This seems like a rather minor optimization compar
scheglov
2016/10/24 17:51:34
I agree about unnecessary optimizations.
Adding TO
|
| return new _File(driver, uriSource); |
| } |