<div dir="ltr"><br><div class="gmail_extra"><br><br><div class="gmail_quote">On Sun, Feb 9, 2014 at 9:08 AM, Bert Freudenberg <span dir="ltr">&lt;<a href="mailto:bert@freudenbergs.de" target="_blank">bert@freudenbergs.de</a>&gt;</span> wrote:<br>
<div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
It is pretty simple to turn off the Compiler&#39;s inlining of ifNil:ifNotNil:. It should also be pretty simple to make ifTrue:/ifFalse: be actual message sends, although I would expect a pretty big slow down since it will need real blocks. But at least their Smalltalk implementation is &quot;executable&quot;. It&#39;s harder for whileTrue:/whileFalse: because if you wanted to implement them with real messages you would need tail call optimization, which Smalltalk VMs don&#39;t ususally do. Hence the implementation in the image that relies on compiler inlining.<br>
</blockquote><div><br></div><div>Well, since we&#39;re talking about de-optimizing here, you *could* do #whileTrue: without optimizing tail calls. It&#39;s just that it would be really slow, especially if you wanted to guard against run-away memory use for loops with lots of iterations. If you want to make things slower, the sky&#39;s the limit!</div>
<div><br></div><div>Colin</div></div><br></div></div>