RFR: 8311864: Add ArraysSupport.hashCode(int[] a, fromIndex, length, initialValue) [v4]
Pavel Rappo
prappo at openjdk.org
Tue Jan 2 14:37:16 UTC 2024
> 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
-------------
Changes:
- all: https://git.openjdk.org/jdk/pull/14831/files
- new: https://git.openjdk.org/jdk/pull/14831/files/655442eb..e55dc5c1
Webrevs:
- full: https://webrevs.openjdk.org/?repo=jdk&pr=14831&range=03
- incr: https://webrevs.openjdk.org/?repo=jdk&pr=14831&range=02-03
Stats: 4826 lines in 316 files changed: 2898 ins; 812 del; 1116 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