[squeak-dev] The Trunk: Kernel-eem.1198.mcz
Bob Arning
arning315 at comcast.net
Sat Nov 24 23:14:43 UTC 2018
just curious, but what is the halt for?
On 11/24/18 9:45 PM, commits at source.squeak.org wrote:
> Eliot Miranda uploaded a new version of Kernel to project The Trunk:
> http://source.squeak.org/trunk/Kernel-eem.1198.mcz
>
> ==================== Summary ====================
>
> Name: Kernel-eem.1198
> Author: eem
> Time: 24 November 2018, 1:44:47.526422 pm
> UUID: 100137c4-2514-4b7f-9064-3dcdfe7d8cc9
> Ancestors: Kernel-eem.1197
>
> Redefine LargePositiveInteger hash for compatibility between 32-bit and 64-bit systems.
>
> =============== Diff against Kernel-eem.1197 ===============
>
> Item was changed:
> ----- Method: LargePositiveInteger>>hash (in category 'comparing') -----
> hash
> + "Answer an integer value that is related to the value of the receiver.
> + Take care that the hash value is the same in both 32-bit and 64-bit versions.
> + Since the integers are by definition perfectly distributed a SmallInteger's hash is itself
> + (it is impossible to derive a hash function that is better distributed than the SmallIntegers
> + themselves). Therefore, for integers that could possibly fit in the SmallInteger range, answer
> + self. For values well outside of the SmallInteger range on 64-bits answer a hash that avoids
> + large integer arithmetic."
> + ^self digitLength <= 8
> + ifTrue: [self]
> + ifFalse:
> + [ByteArray
> + hashBytes: self
> + startingWith: self species hash]!
> -
> - ^ByteArray
> - hashBytes: self
> - startingWith: self species hash!
>
> Item was changed:
> ----- Method: SmallInteger>>hash (in category 'comparing') -----
> hash
> + "Answer an integer value that is related to the value of the receiver.
> + Since the integers are by definition perfectly distributed answer self
> + (it is impossible to derive a hash function that is better distributed
> + than the SmallIntegers themselves). c.f. LargePositiveInteger hash."
>
> ^self!
>
> Item was changed:
> (PackageInfo named: 'Kernel') postscript: '"below, add code to be run after the loading of this package"
> + "Since Kernel-eem.1198 redefines LargePositiveInteger hash,
> + rehash all hashed collections that contain hashed large integers."
> + HashedCollection allSubclassesDo:
> + [:c| | f |
> + f := (c includesBehavior: Set)
> + ifTrue: [[:i| i]]
> + ifFalse: [[:i| i keys]].
> + c allInstancesDo:
> + [:h|
> + ((f value: h) detect: [:e| e isInteger and: [e class ~~ SmallInteger]] ifNone: nil) ifNotNil:
> + [h halt rehash]]]'!
> - ((ByteArray subclasses includes: CompiledMethod)
> - and: [CompiledMethod superclass ~= ByteArray]) ifTrue:
> - [ByteArray removeSubclass: CompiledMethod].
> - (Smalltalk classNamed: #FullBlockClosure) ifNotNil:
> - [:fbc|
> - (fbc identityHash ~= 38) ifTrue:
> - [fbc tryPrimitive: 161 withArgs: #(38 true)]]'!
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.squeakfoundation.org/pipermail/squeak-dev/attachments/20181124/10d93b82/attachment.html>
More information about the Squeak-dev
mailing list
|