Replace usages of identityHashCode to prevent collisions #6512
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
System.identityHashCode is, by default, set to a random int by the JVM. Using it as a map key could lead to collisions. This patch replaces those usages with a new wrapper class that, on top of the identityHashCode for hashing, uses == for the equals check. This prevents any collisions in the map keys.
There is unfortunately no way to test for these collisions without a JVM option (-XX:hashCode), so there is no unit test in this patch.