<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">On Fri, Sep 26, 2014 at 1:53 PM, Nicolas Cellier <span dir="ltr"><<a href="mailto:nicolas.cellier.aka.nice@gmail.com" target="_blank">nicolas.cellier.aka.nice@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">2014-09-26 19:56 UTC+02:00, Eliot Miranda <<a href="mailto:eliot.miranda@gmail.com">eliot.miranda@gmail.com</a>>:<br>
> On Fri, Sep 26, 2014 at 9:34 AM, Nicolas Cellier <<br>
> <a href="mailto:nicolas.cellier.aka.nice@gmail.com">nicolas.cellier.aka.nice@gmail.com</a>> wrote:<br>
><br>
>> So you rely on (nil value -> nil).<br>
>> Will (is) the difference be still significant in Spur?<br>
>><br>
><br>
> Spur won't change that. Spur shouldn't change visible semantics at all<br>
> beyond v asCharacter == v asCharacter is always true.<br>
><br>
<br>
I mean will (does) Spur changes the timing ratio of [] value over nil value?<br></blockquote><div><br></div><div>Ah, no. Block dispatch is essentially unchanged.</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
><br>
>> 2014-09-26 17:11 GMT+02:00 <<a href="mailto:commits@source.squeak.org">commits@source.squeak.org</a>>:<br>
>><br>
>> Levente Uzonyi uploaded a new version of Morphic to project The Trunk:<br>
>>> <a href="http://source.squeak.org/trunk/Morphic-ul.744.mcz" target="_blank">http://source.squeak.org/trunk/Morphic-ul.744.mcz</a><br>
>>><br>
>>> ==================== Summary ====================<br>
>>><br>
>>> Name: Morphic-ul.744<br>
>>> Author: ul<br>
>>> Time: 22 September 2014, 7:45:55.442 pm<br>
>>> UUID: 78178a2f-f249-4767-8429-f8236e1459bc<br>
>>> Ancestors: Morphic-cmm.743<br>
>>><br>
>>> - sped up #valueOfProperty:ifAbsent: and friends<br>
>>><br>
>>> =============== Diff against Morphic-cmm.743 ===============<br>
>>><br>
>>> Item was changed:<br>
>>> ----- Method: Morph>>valueOfProperty:ifAbsent: (in category 'accessing<br>
>>> - properties') -----<br>
>>> valueOfProperty: aSymbol ifAbsent: aBlock<br>
>>> "if the receiver possesses a property of the given name, answer<br>
>>> its value. If not then evaluate aBlock and answer the result of<br>
>>> this block evaluation"<br>
>>> +<br>
>>> + extension ifNil: [ ^aBlock value ].<br>
>>> + ^extension valueOfProperty: aSymbol ifAbsent: aBlock!<br>
>>> - ^ extension<br>
>>> - ifNotNil: [extension valueOfProperty: aSymbol ifAbsent:<br>
>>> aBlock]<br>
>>> - ifNil: [aBlock value]!<br>
>>><br>
>>> Item was changed:<br>
>>> ----- Method: MorphExtension>>layoutFrame (in category 'accessing -<br>
>>> layout properties') -----<br>
>>> layoutFrame<br>
>>> + ^self valueOfProperty: #layoutFrame!<br>
>>> - ^self valueOfProperty: #layoutFrame ifAbsent:[nil]!<br>
>>><br>
>>> Item was changed:<br>
>>> ----- Method: MorphExtension>>layoutPolicy (in category 'accessing -<br>
>>> layout properties') -----<br>
>>> layoutPolicy<br>
>>> + ^self valueOfProperty: #layoutPolicy!<br>
>>> - ^self valueOfProperty: #layoutPolicy ifAbsent:[nil]!<br>
>>><br>
>>> Item was changed:<br>
>>> ----- Method: MorphExtension>>layoutProperties (in category 'accessing<br>
>>> - layout properties') -----<br>
>>> layoutProperties<br>
>>> + ^self valueOfProperty: #layoutProperties!<br>
>>> - ^self valueOfProperty: #layoutProperties ifAbsent:[nil]!<br>
>>><br>
>>> Item was changed:<br>
>>> ----- Method: MorphExtension>>valueOfProperty: (in category 'accessing<br>
>>> - other properties') -----<br>
>>> valueOfProperty: aSymbol<br>
>>> "answer the value of the receiver's property named aSymbol"<br>
>>> +<br>
>>> + ^otherProperties ifNotNil: [ otherProperties at: aSymbol<br>
>>> ifAbsent: nil ]!<br>
>>> - ^ self<br>
>>> - valueOfProperty: aSymbol<br>
>>> - ifAbsent: []!<br>
>>><br>
>>> Item was changed:<br>
>>> ----- Method: MorphExtension>>valueOfProperty:ifAbsent: (in category<br>
>>> 'accessing - other properties') -----<br>
>>> valueOfProperty: aSymbol ifAbsent: aBlock<br>
>>> "if the receiver possesses a property of the given name, answer<br>
>>> its value. If not then evaluate aBlock and answer the result of<br>
>>> this block evaluation"<br>
>>> otherProperties ifNil: [^ aBlock value].<br>
>>> + ^otherProperties at: aSymbol ifAbsent: aBlock!<br>
>>> - ^ otherProperties at: aSymbol ifAbsent: [^ aBlock value]!<br>
>>><br>
>>><br>
>>><br>
>><br>
>><br>
>><br>
>><br>
><br>
<span class="HOEnZb"><font color="#888888">><br>
> --<br>
> best,<br>
> Eliot<br>
><br>
<br>
</font></span></blockquote></div><br><br clear="all"><div><br></div>-- <br>best,<div>Eliot</div>
</div></div>