RFR: 8335820: java/lang/invoke/LFCaching/LFSingleThreadCachingTest.java fails due to IllegalArgumentException: hash must be nonzero

Chen Liang liach at openjdk.org
Mon Jul 8 14:01:32 UTC 2024


On Mon, 8 Jul 2024 13:09:50 GMT, Adam Sotona <asotona at openjdk.org> wrote:

> Class-File API constant pool implementation requires non-zero entry hash code.
> Unfortunately current implementation computes zero hash code for specific CP entries.
> 
> This patch removes invalid and obsolete `AbstractPoolEntry::phiMix` calculation and assures all pool entries have non-zero hash. A regression test of the actual zero-hash `IntegerEntry` has been added. 
> 
> All pre-computed hash codes in `BoundAttribute::standardAttribute` are updated.
> 
> The patch has no performance effect measurable by any of the actual Class-File API benchmarks.
> 
> Please review.
> 
> Thanks,
> Adam

src/java.base/share/classes/jdk/internal/classfile/impl/BootstrapMethodEntryImpl.java line 79:

> 77:     static int computeHashCode(MethodHandleEntryImpl handle,
> 78:                                List<? extends LoadableConstantEntry> arguments) {
> 79:         return 31 * handle.hashCode() + arguments.hashCode();

Should we update the algorithm here, as this algorithm processes hash codes of the 2nd last item of arguments and the handle the same, both just multiplied by 31?

Also need a copyright year update.

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

PR Review Comment: https://git.openjdk.org/jdk/pull/20074#discussion_r1668690446


More information about the core-libs-dev mailing list