<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">&lt;<a href="mailto:nicolas.cellier.aka.nice@gmail.com" target="_blank">nicolas.cellier.aka.nice@gmail.com</a>&gt;</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 &lt;<a href="mailto:eliot.miranda@gmail.com">eliot.miranda@gmail.com</a>&gt;:<br>
&gt; On Fri, Sep 26, 2014 at 9:34 AM, Nicolas Cellier &lt;<br>
&gt; <a href="mailto:nicolas.cellier.aka.nice@gmail.com">nicolas.cellier.aka.nice@gmail.com</a>&gt; wrote:<br>
&gt;<br>
&gt;&gt; So you rely on (nil value -&gt; nil).<br>
&gt;&gt; Will (is) the difference be still significant in Spur?<br>
&gt;&gt;<br>
&gt;<br>
&gt; Spur won&#39;t change that.  Spur shouldn&#39;t change visible semantics at all<br>
&gt; beyond v asCharacter == v asCharacter is always true.<br>
&gt;<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>
&gt;<br>
&gt;&gt; 2014-09-26 17:11 GMT+02:00 &lt;<a href="mailto:commits@source.squeak.org">commits@source.squeak.org</a>&gt;:<br>
&gt;&gt;<br>
&gt;&gt; Levente Uzonyi uploaded a new version of Morphic to project The Trunk:<br>
&gt;&gt;&gt; <a href="http://source.squeak.org/trunk/Morphic-ul.744.mcz" target="_blank">http://source.squeak.org/trunk/Morphic-ul.744.mcz</a><br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; ==================== Summary ====================<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; Name: Morphic-ul.744<br>
&gt;&gt;&gt; Author: ul<br>
&gt;&gt;&gt; Time: 22 September 2014, 7:45:55.442 pm<br>
&gt;&gt;&gt; UUID: 78178a2f-f249-4767-8429-f8236e1459bc<br>
&gt;&gt;&gt; Ancestors: Morphic-cmm.743<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; - sped up #valueOfProperty:ifAbsent: and friends<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; =============== Diff against Morphic-cmm.743 ===============<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; Item was changed:<br>
&gt;&gt;&gt;   ----- Method: Morph&gt;&gt;valueOfProperty:ifAbsent: (in category &#39;accessing<br>
&gt;&gt;&gt; - properties&#39;) -----<br>
&gt;&gt;&gt;   valueOfProperty: aSymbol ifAbsent: aBlock<br>
&gt;&gt;&gt;         &quot;if the receiver possesses a property of the given name, answer<br>
&gt;&gt;&gt;         its value. If not then evaluate aBlock and answer the result of<br>
&gt;&gt;&gt;         this block evaluation&quot;<br>
&gt;&gt;&gt; +<br>
&gt;&gt;&gt; +       extension ifNil: [ ^aBlock value ].<br>
&gt;&gt;&gt; +       ^extension      valueOfProperty: aSymbol ifAbsent: aBlock!<br>
&gt;&gt;&gt; -       ^ extension<br>
&gt;&gt;&gt; -               ifNotNil: [extension valueOfProperty: aSymbol ifAbsent:<br>
&gt;&gt;&gt; aBlock]<br>
&gt;&gt;&gt; -               ifNil: [aBlock value]!<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; Item was changed:<br>
&gt;&gt;&gt;   ----- Method: MorphExtension&gt;&gt;layoutFrame (in category &#39;accessing -<br>
&gt;&gt;&gt; layout properties&#39;) -----<br>
&gt;&gt;&gt;   layoutFrame<br>
&gt;&gt;&gt; +       ^self valueOfProperty: #layoutFrame!<br>
&gt;&gt;&gt; -       ^self valueOfProperty: #layoutFrame ifAbsent:[nil]!<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; Item was changed:<br>
&gt;&gt;&gt;   ----- Method: MorphExtension&gt;&gt;layoutPolicy (in category &#39;accessing -<br>
&gt;&gt;&gt; layout properties&#39;) -----<br>
&gt;&gt;&gt;   layoutPolicy<br>
&gt;&gt;&gt; +       ^self valueOfProperty: #layoutPolicy!<br>
&gt;&gt;&gt; -       ^self valueOfProperty: #layoutPolicy ifAbsent:[nil]!<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; Item was changed:<br>
&gt;&gt;&gt;   ----- Method: MorphExtension&gt;&gt;layoutProperties (in category &#39;accessing<br>
&gt;&gt;&gt; - layout properties&#39;) -----<br>
&gt;&gt;&gt;   layoutProperties<br>
&gt;&gt;&gt; +       ^self valueOfProperty: #layoutProperties!<br>
&gt;&gt;&gt; -       ^self valueOfProperty: #layoutProperties ifAbsent:[nil]!<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; Item was changed:<br>
&gt;&gt;&gt;   ----- Method: MorphExtension&gt;&gt;valueOfProperty: (in category &#39;accessing<br>
&gt;&gt;&gt; - other properties&#39;) -----<br>
&gt;&gt;&gt;   valueOfProperty: aSymbol<br>
&gt;&gt;&gt;   &quot;answer the value of the receiver&#39;s property named aSymbol&quot;<br>
&gt;&gt;&gt; +<br>
&gt;&gt;&gt; +       ^otherProperties ifNotNil: [ otherProperties at: aSymbol<br>
&gt;&gt;&gt; ifAbsent: nil ]!<br>
&gt;&gt;&gt; -       ^ self<br>
&gt;&gt;&gt; -               valueOfProperty: aSymbol<br>
&gt;&gt;&gt; -               ifAbsent: []!<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; Item was changed:<br>
&gt;&gt;&gt;   ----- Method: MorphExtension&gt;&gt;valueOfProperty:ifAbsent: (in category<br>
&gt;&gt;&gt; &#39;accessing - other properties&#39;) -----<br>
&gt;&gt;&gt;   valueOfProperty: aSymbol ifAbsent: aBlock<br>
&gt;&gt;&gt;         &quot;if the receiver possesses a property of the given name, answer<br>
&gt;&gt;&gt;         its value. If not then evaluate aBlock and answer the result of<br>
&gt;&gt;&gt;         this block evaluation&quot;<br>
&gt;&gt;&gt;         otherProperties ifNil: [^ aBlock value].<br>
&gt;&gt;&gt; +       ^otherProperties at: aSymbol ifAbsent: aBlock!<br>
&gt;&gt;&gt; -       ^ otherProperties at: aSymbol ifAbsent: [^ aBlock value]!<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;<br>
<span class="HOEnZb"><font color="#888888">&gt;<br>
&gt; --<br>
&gt; best,<br>
&gt; Eliot<br>
&gt;<br>
<br>
</font></span></blockquote></div><br><br clear="all"><div><br></div>-- <br>best,<div>Eliot</div>
</div></div>