[squeak-dev] [Pharo-dev] 32 vs 64 bits and large integer hash

Marcus Denker marcus.denker at inria.fr
Thu Nov 22 09:47:26 UTC 2018



> On 21 Nov 2018, at 19:45, Eliot Miranda <eliot.miranda at gmail.com> wrote:
> 
> Hi All,
> 
>     right now we have the following definition of Large(Positive)Integer>>hash:
> 
> hash
> 	^ByteArray hashBytes: self startingWith: self species hash
> 
> which means that for all integers outside of the 32-bit SmallInteger range (-2 ^ 30 to 2 ^ 30 - 1), the 32-bit system and the 64-bit system answer different values for hash.
> 
> e.g. in 64 bits: (2 raisedTo: 30) hash 1073741824
>  but in 32 bits: (2 raisedTo: 30) hash 230045764
> 
> This is unsatisfactory.  I propose changing Large(Positive)Integer>>hash to
> 
> hash
> 	^self digitLength <= 8
> 		ifTrue: [self]
> 		ifFalse: [ByteArray hashBytes: self startingWith: self species hash]
> 
> 

Thanks, I added an issue tracker entry:
	
	https://pharo.fogbugz.com/f/cases/22690/32-vs-64-bits-and-large-integer-hash

I will do a pull request later (if not someone else is faster to do it).

	Marcus


--
Marcus Denker  --  marcus at 2denker.de
http://www.zweidenker.de


More information about the Squeak-dev mailing list