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

Reply via email to