FRF: 8033792: AltHashing used jint for imprecise bit shifting

Yumin Qi yumin.qi at
Fri Feb 7 09:54:54 PST 2014

On 2/6/2014 11:47 PM, David Holmes wrote:
> Hi Yumin,
> On 7/02/2014 2:14 PM, Yumin Qi wrote:
>> Hi,
>>    Please review the change for 8033792.
>>    Summary:  AltHashing uses 'jint' type in the way as 'unsigned int' in
>> bit shifting, which is imprecise.  This could lead loss of precision
>> when converted between jint and 'unsigned int' during bit operation. Fix
>> by changing operation variable type from 'jint' to 'juint', before
>> return, cast it into type 'jint'.
> I don't see how casting to unsigned int can lead to a loss of 
> precision here. Further you now assign h1 from a jint and you pass it 
> as a jint parameter to the Integer_rotate functions which would seem 
> to me to have more opportunity for conversion issues. Either way this 
> code is completely confused about the type of arithmetic it is trying 
> to do (and I would think a hash should be unsigned to begin with ??).
I will double check _seed, all the work here is related to it. If it is 
defined as 'unsigned int' and all the operations on it with same type, 
all the problems (complains from internal tool) should he gone.
> You didn't mention the unrelated change in 
> src/share/vm/oops/instanceKlass.hpp
This is for the bug 8030129 which will not fix, but add an assert here 
to catch problem in debug binary. Sorry forget to mention this.

> Thanks,
> David
>> Thanks
>> Yumin

More information about the hotspot-runtime-dev mailing list