On Wed, 5 Jul 2023 14:39:44 GMT, Pavel Rappo <[email protected]> wrote:
>> src/java.base/share/classes/java/security/spec/ECFieldF2m.java line 235:
>>
>>> 233: public int hashCode() {
>>> 234: int value = m << 5;
>>> 235: // consider simplifying using Objects.hashCode(rp) after
>>> JDK-8015417
>>
>> Could you explain this comment? Why does it apply here, and not to other
>> methods like CodeSigner.hashCode?
>
> You are absolutely right: adding that comment, while actively disregarding
> concerns described in it elsewhere, warrants some explanation.
>
> While working on this and the related PRs, I discovered JDK-8015417. hashCode
> and, to a lesser extent, equals in ECFieldF2m seemed lean and
> performance-sensitive so as to apply the smarts of JDK-8015417. Frankly,
> performance sensitivity was my guess; anyway, I kept the original behaviour
> for that site.
>
> Since then, I learned that JDK-8015417 is quite complicated and well beyond
> my level of understanding of how JVM works. Until I have clearer
> understanding of the effects of that issue on this and similar refactoring
> efforts, I won't integrate this or any other PRs where using the
> java.util.Objects static methods is a primary goal.
>
> That said, I'll remove the comment and refactor that `?:` conditional to use
> `Objects.hashCode(Object)`, to be consistent with the rest of this PR.
>
> FWIW, we've accidentally started discussion on those effects in another PR:
> https://github.com/openjdk/jdk/pull/14752#pullrequestreview-1511190453. It
> might as well have been this PR, but that PR was first. While either PR is
> good, let's keep it confined and organized. So, please follow that
> discussion, if you're interested.
Refactored in 3f316b49f26.
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/14738#discussion_r1253222537