[analyzer] Optimize UsedLocalElements.merge().
See b/235079681 (analyzer is slow with many part file).
1. Pre-compute UsedLocalElements.merge() before calling '_computeHints()' on each part files.
2. Optimize HashSet insertion:
Remove implementation of ParameterMember.hashCode.
This implementation was not linked to a corresponding '.==' override.
So, while not wrong, it did cause many collisions not resulting in equality.
Change-Id: I060d62e9e81a7d9b2183306106a16c27a5cbeffe
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/250520
Commit-Queue: Emmanuel Pellereau <emmanuelp@google.com>
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
diff --git a/pkg/analyzer/lib/src/dart/analysis/library_analyzer.dart b/pkg/analyzer/lib/src/dart/analysis/library_analyzer.dart
index dc66628..3289cec 100644
--- a/pkg/analyzer/lib/src/dart/analysis/library_analyzer.dart
+++ b/pkg/analyzer/lib/src/dart/analysis/library_analyzer.dart
@@ -261,12 +261,14 @@
usedImportedElements.add(visitor.usedElements);
}
}
+ UsedLocalElements usedElements =
+ UsedLocalElements.merge(usedLocalElements);
units.forEach((file, unit) {
_computeHints(
file,
unit,
usedImportedElements: usedImportedElements,
- usedLocalElements: usedLocalElements,
+ usedElements: usedElements,
);
});
}
@@ -314,7 +316,7 @@
FileState file,
CompilationUnit unit, {
required List<UsedImportedElements> usedImportedElements,
- required List<UsedLocalElements> usedLocalElements,
+ required UsedLocalElements usedElements,
}) {
AnalysisErrorListener errorListener = _getErrorListener(file);
ErrorReporter errorReporter = _getErrorReporter(file);
@@ -371,8 +373,6 @@
// Unused local elements.
{
- UsedLocalElements usedElements =
- UsedLocalElements.merge(usedLocalElements);
UnusedLocalElementsVerifier visitor = UnusedLocalElementsVerifier(
errorListener, usedElements, _inheritance, _libraryElement);
unit.accept(visitor);
diff --git a/pkg/analyzer/lib/src/dart/element/member.dart b/pkg/analyzer/lib/src/dart/element/member.dart
index 07c1d2a..2455528 100644
--- a/pkg/analyzer/lib/src/dart/element/member.dart
+++ b/pkg/analyzer/lib/src/dart/element/member.dart
@@ -852,9 +852,6 @@
bool get hasDefaultValue => declaration.hasDefaultValue;
@override
- int get hashCode => declaration.hashCode;
-
- @override
bool get isCovariant => declaration.isCovariant;
@override