Thanks for all these helpful responses. So I guess there's nothing to do here 
except we want to integrate the change proposed by Chen to update the 
expression to use Long.hashCode.

Cheers,
Steffen

-------- Ursprüngliche Nachricht --------
Am 30.04.25 23:25 schrieb Roger Riggs :

> Hi Steffen,
>
> One other oddity about the shift operators in Java, they only use the lower 5 
> bits of the shift distance argument.
>
> So,
>
> int x = 1024;
> x >>4 == 64; and
> x >> 36 == 64;
>
> It is unusual to specify the algorithm used for hashcodes, though in some 
> cases backward compatibility has forced them to be specified.
>
> Regards, Roger
>
> On 4/30/25 4:37 PM, Steffen Nießing wrote:
>
>> Thanks, haven't seen unsigned right shift before. You're right, it should be 
>> fine to use the unsigned one and hence Long.hashCode for that.
>>
>> However, the docs should match the expression used in the implementation 
>> when explicitly naming the returned expression. Should we update both to 
>> Long.hashCode(this.getTime())?
>>
>> Cheers,
>> Steffen
>>
>> Chen Liang [<chen.l.li...@oracle.com>](mailto:chen.l.li...@oracle.com) 
>> schrieb am Mittwoch, 30. April 2025 um 22:27:
>>
>>> Well, the sign has no impact here - the most significant 32 bits duplicated 
>>> from the original sign bit are immediately discarded in the subsequent int 
>>> cast truncation to the least significant 32 bits. However, how there is 
>>> such a difference from before OpenJDK was published is still intriguing.
>>> ---------------------------------------------------------------
>>>
>>> From: core-libs-dev 
>>> [<core-libs-dev-r...@openjdk.org>](mailto:core-libs-dev-r...@openjdk.org) 
>>> on behalf of Naoto Sato 
>>> [<naoto.s...@oracle.com>](mailto:naoto.s...@oracle.com)
>>> Sent: Wednesday, April 30, 2025 3:11 PM
>>> To: core-libs-dev@openjdk.org 
>>> [<core-libs-dev@openjdk.org>](mailto:core-libs-dev@openjdk.org)
>>> Subject: Re: JavaDoc fix in java.util.Date
>>>
>>> Interestingly, the implementation of Date.hashCode() does use the signed
>>> right shift ">>".
>>>
>>> Naoto
>>>
>>> On 4/30/25 1:06 PM, Chen Liang wrote:
>>>> Indeed, Joe is right. Unsigned right shift does not appear often and is
>>>> equivalent to signed right shift if the sign bit is 0.
>>>>
>>>> However, this piece of quote can get an upgrade - it can become
>>>> `Long.hashCode(this.getTime())`.
>>>>
>>>> *
>>>> Chen
>>>>
>>>> ------------------------------------------------------------------------
>>>> *From:* core-libs-dev 
>>>> [<core-libs-dev-r...@openjdk.org>](mailto:core-libs-dev-r...@openjdk.org) 
>>>> on behalf of
>>>> Joseph D. Darcy [<joe.da...@oracle.com>](mailto:joe.da...@oracle.com)
>>>> *Sent:* Wednesday, April 30, 2025 2:54 PM
>>>> *To:* Steffen Nießing 
>>>> [<zuniq...@protonmail.com>](mailto:zuniq...@protonmail.com); core-libs-
>>>> d...@openjdk.org 
>>>> [<core-libs-dev@openjdk.org>](mailto:core-libs-dev@openjdk.org)
>>>> *Subject:* Re: JavaDoc fix in java.util.Date
>>>> Unsigned right shift is non-existent?
>>>>
>>>> "The operators << (left shift), >> (signed right shift), and >>>
>>>> (unsigned right shift) are called the shift operators. The left-hand
>>>> operand of a shift operator is the value to be shifted; the right-hand
>>>> operand specifies the shift distance. "
>>>>
>>>> https://docs.oracle.com/javase/specs/jls/se24/html/jls-15.html#jls-15.19
>>>> <https://docs.oracle.com/javase/specs/jls/se24/html/jls-15.html#jls-15.19>
>>>>
>>>> -Joe
>>>>
>>>> On 4/30/2025 12:46 PM, Steffen Nießing wrote:
>>>>> Hello,
>>>>>
>>>>> I'm new to the OpenJDK community and plan to make my first change.
>>>>>
>>>>> I've found a small mistake in the documentation of
>>>>> java.util.Date#hashCode(). The documentation provides a Java
>>>>> expression of the returned value, which uses a non-existent operator
>>>>> '>>>'.
>>>>>
>>>>> Now I'm searching for a sponsor for a JBS issue and the code review.
>>>>> Chen Liang directed me to this mailing list to ask for sponsoring on
>>>>> this topic.
>>>>>
>>>>> Cheers,
>>>>> Steffen
>>>>
>>>>

Reply via email to