RFR: 8311864: Add ArraysSupport.hashCode(int[] a, fromIndex, length, initialValue)

Pavel Rappo prappo at openjdk.org
Tue Jul 11 16:43:26 UTC 2023


This PR adds an internal method to calculate hash code from the provided integer array, offset and length into that array, and the initial hash code value.

Current options for calculating a hash code for int[] are inflexible. It's either ArraysSupport.vectorizedHashCode with an offset, length and initial value, or Arrays.hashCode with just an array.

For an arbitrary int[], unconditional vectorization might be unwarranted or puzzling. Unfortunately, it's the only hash code method that operates on an array subrange or accepts the initial hash code value.

A more convenient method could be added and then used, for example, here:

* https://github.com/openjdk/jdk/blob/0ef03f122866f010ebf50683097e9b92e41cdaad/src/java.base/share/classes/java/util/concurrent/CopyOnWriteArrayList.java#L1076-L1083

* https://github.com/openjdk/jdk/blob/0ef03f122866f010ebf50683097e9b92e41cdaad/src/java.base/share/classes/java/util/ArrayList.java#L669-L680

* https://github.com/openjdk/jdk/blob/0ef03f122866f010ebf50683097e9b92e41cdaad/src/java.base/share/classes/sun/security/pkcs10/PKCS10.java#L356-L362

This PR adds such a method and provides tests for it. Additionally, this PR adds tests for `null` passed to `java.util.Arrays.hashCode` overloads, behaviour which was specified but untested.

-------------

Commit messages:
 - Initial commit

Changes: https://git.openjdk.org/jdk/pull/14831/files
 Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=14831&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8311864
  Stats: 149 lines in 4 files changed: 142 ins; 4 del; 3 mod
  Patch: https://git.openjdk.org/jdk/pull/14831.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/14831/head:pull/14831

PR: https://git.openjdk.org/jdk/pull/14831


More information about the core-libs-dev mailing list