[squeak-dev] The Inbox: Collections-cbc.810.mcz
Eliot Miranda
eliot.miranda at gmail.com
Tue Oct 30 00:47:44 UTC 2018
On Mon, Oct 29, 2018 at 12:36 PM Nicolas Cellier <
nicolas.cellier.aka.nice at gmail.com> wrote:
> Is Interval = Array such an important feature?
> My opinion now is that we should rather abandon it.
>
+1
>
> Le lun. 29 oct. 2018 à 01:16, <commits at source.squeak.org> a écrit :
>
>> Chris Cunningham uploaded a new version of Collections to project The
>> Inbox:
>> http://source.squeak.org/inbox/Collections-cbc.810.mcz
>>
>> ==================== Summary ====================
>>
>> Name: Collections-cbc.810
>> Author: cbc
>> Time: 28 October 2018, 5:15:56.960512 pm
>> UUID: 729c4dd2-f677-3c40-9ded-4a407a71f824
>> Ancestors: Collections-topa.809
>>
>> Do NOT move to trunk!
>> Various option for fixing the internval hash issue related to
>> collectionsTests cbc.296.
>>
>> Some explanation to go to mailing list - this is so interested folks can
>> try out the code.
>>
>> =============== Diff against Collections-topa.809 ===============
>>
>> Item was added:
>> + ----- Method: Array>>hashBetterFastIntervalCompatible (in category
>> 'comparing') -----
>> + hashBetterFastIntervalCompatible
>> + | hash |
>> + self size < 48 ifTrue: [^super hash]. "Just check every element."
>> + hash := self species hash.
>> + 1 to: 16 do: [:i| hash := (hash + (self at: i) hash)
>> hashMultiply].
>> + self size - 15 to: self size do: [:i| hash := (hash + (self at:
>> i) hash) hashMultiply].
>> + ^(hash + self size hash) hashMultiply!
>>
>> Item was added:
>> + ----- Method: Array>>hashFastIntervalCompatible (in category
>> 'comparing') -----
>> + hashFastIntervalCompatible
>> + self size = 0 ifTrue: [^self species hash].
>> + ^(self species hash +
>> + (((((self at: 1) hash bitShift: 2)
>> + bitOr: (self at: self size) hash)
>> + bitShift: 1)
>> + bitOr: self size)
>> + ) hashMultiply!
>>
>> Item was changed:
>> ----- Method: Interval>>hash (in category 'comparing') -----
>> hash
>> "Hash is reimplemented because = is implemented."
>>
>> ^(((start hash bitShift: 2)
>> bitOr: stop hash)
>> bitShift: 1)
>> bitOr: self size!
>>
>> Item was added:
>> + ----- Method: Interval>>hashBetter (in category 'comparing') -----
>> + hashBetter
>> + "Hash is reimplemented because = is implemented."
>> +
>> + ^(((start hash bitShift: 2)
>> + bitOr: self last hash)
>> + bitShift: 1)
>> + bitOr: self size!
>>
>> Item was added:
>> + ----- Method: Interval>>hashBetterAlsoFixBug3380 (in category
>> 'comparing') -----
>> + hashBetterAlsoFixBug3380
>> + "Hash is reimplemented because = is implemented."
>> + "Altered so that we has the same as self asArray hash"
>> + ^self inject: Array hash into: [:workingHash :each| (workingHash
>> + each hash) hashMultiply ].!
>>
>> Item was added:
>> + ----- Method: Interval>>hashBetterFastArrayCompatible (in category
>> 'comparing') -----
>> + hashBetterFastArrayCompatible
>> + | hash |
>> + self size < 48 ifTrue: [^self slowHash]. "Just check every
>> element."
>> + hash := Array hash.
>> + 1 to: 16 do: [:i| hash := (hash + (self at: i) hash)
>> hashMultiply].
>> + self size - 15 to: self size do: [:i| hash := (hash + (self at:
>> i) hash) hashMultiply].
>> + ^(hash + self size hash) hashMultiply!
>>
>> Item was added:
>> + ----- Method: Interval>>hashFastArrayCompatible (in category
>> 'comparing') -----
>> + hashFastArrayCompatible
>> + "Hash is reimplemented because = is implemented."
>> + self size = 0 ifTrue: [^Array hash].
>> + ^(Array hash +
>> + ((((start hash bitShift: 2)
>> + bitOr: self last hash)
>> + bitShift: 1)
>> + bitOr: self size)
>> + ) hashMultiply!
>>
>> Item was added:
>> + ----- Method: Interval>>hashSlowerBetterAlsoFixBug3380 (in category
>> 'comparing') -----
>> + hashSlowerBetterAlsoFixBug3380
>> + "Hash is reimplemented because = is implemented."
>> + "Altered so that we has the same as self asArray hash"
>> + | hash |
>> +
>> + hash := Array hash.
>> + 1 to: self size do: [:i | hash := (hash + (self at: i) hash)
>> hashMultiply].
>> + ^hash!
>>
>> Item was added:
>> + ----- Method: Interval>>slowHash (in category 'comparing') -----
>> + slowHash
>> + "Hash is reimplemented because = is implemented."
>> + "Altered so that we has the same as self asArray hash"
>> + ^self inject: Array hash into: [:workingHash :each| (workingHash
>> + each hash) hashMultiply ].!
>>
>>
>>
>
--
_,,,^..^,,,_
best, Eliot
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.squeakfoundation.org/pipermail/squeak-dev/attachments/20181029/f56e80d5/attachment.html>
More information about the Squeak-dev
mailing list
|