RFR: 8033792: AltHashing used jint for imprecise bit shifting

Yumin Qi yumin.qi at oracle.com
Fri Feb 7 21:08:43 PST 2014

Hi, David and all

   New webrev:

   Changed _seed to be defined as 'juint' and changed related uses. This 
can avoid loss of precision for conversion between 'jint' and 'juint'.
   Tested with -XX:+ExecuteInternalVMTests and  JPRT.

   Add assert for the path which has to contain a none NULL valid Klass* 
(we did not check for valid Klass*, only check if it is not a NULL here) 
in debug mode.


On 2/7/2014 9:54 AM, Yumin Qi wrote:
> 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'.
>>> http://cr.openjdk.java.net/~minqi/8033792/webrev00/
>> 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
> Yumin
>> Thanks,
>> David
>>> Thanks
>>> Yumin

More information about the hotspot-runtime-dev mailing list