[squeak-dev] The Trunk: KernelTests-eem.224.mcz

Frank Shearar frank.shearar at gmail.com
Mon May 28 14:59:27 UTC 2012


On 28 May 2012 14:33, Levente Uzonyi <leves at elte.hu> wrote:
> On Mon, 28 May 2012, Frank Shearar wrote:
>
>> On 27 May 2012 23:16,  <commits at source.squeak.org> wrote:
>>>
>>> Eliot Miranda uploaded a new version of KernelTests to project The Trunk:
>>> http://source.squeak.org/trunk/KernelTests-eem.224.mcz
>>>
>>> ==================== Summary ====================
>>>
>>> Name: KernelTests-eem.224
>>> Author: eem
>>> Time: 27 May 2012, 3:16:16.618 pm
>>> UUID: 2d674fd0-22e3-4b5c-82ae-af5642c9614f
>>> Ancestors: KernelTests-nice.223
>>>
>>> Add a long test case for CompiledMethod = & hash
>>>
>>> =============== Diff against KernelTests-nice.223 ===============
>>>
>>> Item was added:
>>> + LongTestCase subclass: #CompiledMethodComparisonTest
>>> +       instanceVariableNames: ''
>>> +       classVariableNames: ''
>>> +       poolDictionaries: ''
>>> +       category: 'KernelTests-Methods'!
>>>
>>> Item was added:
>>> + ----- Method: CompiledMethodComparisonTest>>testHash (in category
>>> 'tests') -----
>>> + testHash
>>> +       | ai |
>>> +       ai := CompiledMethod allInstances.
>>> +       ai do:
>>> +               [:a|
>>> +               ai do:
>>> +                       [:b|
>>> +                       a = b ifTrue: [self assert: a hash = b hash]]]!
>>>
>>>
>>
>> Not necessarily here, but it'd be good to see that (a = b) ifFalse:
>> [self deny: a hash = b hash] holds.
>
>
> That would be a nice property, but hash functions are not injective. If they
> were, then either the codomain would be too large (not SmallInteger in our
> case, which makes hashing impractical) or there were no need for the use of
> hashing at all, since there were no collisions.

Sure, collisions mean that you can have a ~= b and yet a hash = b
hash. Nevertheless, CompiledMethod define: #hash as: [^ 1] satisfies
the above test, so on its own it's insufficient. I wouldn't ask for
testing CM x CM  - {CompiledMethods whose hashes collide} !

frank

> Levente
>
>>
>> frank
>>
>
>
>


More information about the Squeak-dev mailing list