[squeak-dev] The Trunk: Kernel-ul.604.mcz

Levente Uzonyi leves at elte.hu
Sun Jul 10 19:02:41 UTC 2011


On Sun, 10 Jul 2011, Eliot Miranda wrote:

> Hi Levente,
>
>    why not
>
> = aNumber
>       aNumber isInteger ifTrue:
>             [^aNumber class == self class
>              and: [(self digitCompare: aNumber) = 0]].
>       ^aNumber isNumber
>        and: [aNumber adaptToInteger: self andCompare: #=]
>
> or
>
> = aNumber
>       ^aNumber isInteger
>            ifTrue:
>                [aNumber class == self class
>                 and: [(self digitCompare: aNumber) = 0]].
>             ifFalse:
>                 [aNumber isNumber
>                  and: [aNumber adaptToInteger: self andCompare: #=]]

I've been thinking about this after commiting, but I came to the 
conclusion that my version has slightly more efficient bytecodes, because 
it avoids jumps to the return bytecode. :)


Levente

>
> On Sun, Jul 10, 2011 at 7:36 AM, <commits at source.squeak.org> wrote:
>
>> Levente Uzonyi uploaded a new version of Kernel to project The Trunk:
>> http://source.squeak.org/trunk/Kernel-ul.604.mcz
>>
>> ==================== Summary ====================
>>
>> Name: Kernel-ul.604
>> Author: ul
>> Time: 10 July 2011, 4:36:20.467 pm
>> UUID: f758876f-a507-404b-aa2f-2c1038504b48
>> Ancestors: Kernel-bf.603
>>
>> Optimized Integer >> #= for integer-integer comparisons. Return false for
>> integers from different classes without further checking.
>>
>> =============== Diff against Kernel-bf.603 ===============
>>
>> Item was changed:
>>  ----- Method: Integer>>= (in category 'comparing') -----
>>  = aNumber
>> +
>> +       aNumber isInteger ifTrue: [
>> +               aNumber class == self class ifFalse: [ ^false ].
>> +               ^(self digitCompare: aNumber) = 0 ].
>> +       aNumber isNumber ifFalse: [ ^false ].
>> +       ^aNumber adaptToInteger: self andCompare: #=!
>> -       aNumber isNumber ifFalse: [^ false].
>> -       aNumber isInteger ifTrue:
>> -               [aNumber negative == self negative
>> -                       ifTrue: [^ (self digitCompare: aNumber) = 0]
>> -                       ifFalse: [^ false]].
>> -       ^ aNumber adaptToInteger: self andCompare: #=!
>>
>>
>>
>
>
> -- 
> best,
> Eliot
>



More information about the Squeak-dev mailing list