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

Pavel Rappo prappo at openjdk.org
Wed Jan 17 21:36:52 UTC 2024


On Tue, 2 Jan 2024 14:37:16 GMT, Pavel Rappo <prappo at openjdk.org> wrote:

>> 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.
>
> Pavel Rappo has updated the pull request with a new target base due to a merge or a rebase. The incremental webrev excludes the unrelated changes brought in by the merge/rebase. The pull request contains four additional commits since the last revision:
> 
>  - Merge branch 'master' into 8311864
>  - Merge remote-tracking branch 'jdk/master' into 8311864
>  - Merge branch 'master' into 8311864
>  - Initial commit

To Skara bots: keep this PR alive.

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

PR Comment: https://git.openjdk.org/jdk/pull/14831#issuecomment-1896855868


More information about the core-libs-dev mailing list