<div dir="ltr"><div dir="ltr"><div>Hi Eliot,</div><div><br></div><div>Sorry about top-posting previously. Stupid Gmail!<br></div><div><br></div><div>
<div class="gmail-aju"><div class="gmail-aCi"><img id="gmail-:mk_25-e" name=":mk" src="https://www.google.com/s2/u/0/photos/public/AIbEiAIAAABDCIiYzrz8h92PSyILdmNhcmRfcGhvdG8qKDA3ZWMxY2I1NmI2ZGJjMTBlMDEyOGY4NmJlODM2NzYxY2MxYzY5NTkwAVa50OAEOYpY08k1GfJzyWXGbXpu?sz=40" class="gmail-ajn"></div></div><div class="gmail-gs"><div class="gmail-gE gmail-iv gmail-gt"><table class="gmail-cf gmail-gJ" cellpadding="0"><tbody><tr class="gmail-acZ"><td class="gmail-gF gmail-gK"><table class="gmail-cf gmail-ix" cellpadding="0"><tbody><tr><td class="gmail-c2"><h3 class="gmail-iw"><span class="gmail-qu" tabindex="-1"><span name="Eliot Miranda" class="gmail-gD">Eliot Miranda</span> <span class="gmail-go"><a target="_blank" href="https://support.google.com/mail/answer/1311182?hl=en" class="gmail-acP">via</a> <a href="http://squeak.org">squeak.org</a> </span></span></h3></td></tr></tbody></table></td><td class="gmail-gH gmail-bAk"><div class="gmail-gK"><span></span><span id="gmail-:vb" class="gmail-g3" title="Aug 31, 2020, 4:40 PM" alt="Aug 31, 2020, 4:40 PM" tabindex="-1">4:40 PM (4 minutes ago)</span></div></td></tr></tbody></table></div></div><table class="gmail-cf gmail-gJ" cellpadding="0"><tbody><tr class="gmail-acZ"><td class="gmail-gH"><br></td><td class="gmail-gH gmail-acX gmail-bAm" rowspan="2"><br></td></tr></tbody></table><table class="gmail-cf gmail-gJ" cellpadding="0"><tbody><tr class="gmail-acZ gmail-xD"></tr></tbody></table><table class="gmail-cf gmail-gJ" cellpadding="0"><tbody><tr class="gmail-acZ gmail-xD"><td colspan="3"><table class="gmail-cf gmail-adz" cellpadding="0"><tbody><tr><td class="gmail-ady"><div class="gmail-iw gmail-ajw"><span class="gmail-hb">to <span dir="ltr" name="Open" class="gmail-g2">Open</span> </span></div><div id="gmail-:yf" class="gmail-ajy" tabindex="0"><img class="gmail-ajz" src="https://mail.google.com/mail/u/0/images/cleardot.gif" alt=""></div></td></tr></tbody></table></td></tr></tbody></table></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Mon, Aug 31, 2020 at 4:40 PM Eliot Miranda <<a href="mailto:eliot.miranda@gmail.com">eliot.miranda@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"> <div dir="ltr"><div dir="ltr"><div dir="ltr">Hi Florin,<br></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Mon, Aug 31, 2020 at 1:35 PM Florin Mateoc <<a href="mailto:florin.mateoc@gmail.com" target="_blank">florin.mateoc@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"> <div dir="ltr"><div>Hi Eliot,</div><div><br></div><div>Thank you for your reply and for the extra details about #instVarAt:.</div><div>To answer your question, I would have expected the primitive to fail for non-pointers objects, as I associate in my mind instvars with named instvars, but I am not invested in this (mis)association, so thank you for correcting it.</div><div><br></div><div>But regarding #ifCurtailed, I know that primitives198 1nd 199 are not "real", I was referring to something else. The primitive failure code in the method #ifCurtailed never touches the argument, regardless of the path taken. I think that is incorrect, even if only for documentation purposes.</div></div></blockquote><div><br></div><div>I don't understand.  I see no error code.  We're talking about this method right?</div><div><br></div><div>BlockClosure>>ifCurtailed: aBlock</div><div><span style="white-space:pre-wrap">        </span>"Evaluate the receiver with an abnormal termination action.</div><div><span style="white-space:pre-wrap"> </span> Evaluate aBlock only if execution is unwound during execution</div><div><span style="white-space:pre-wrap">   </span> of the receiver.  If execution of the receiver finishes normally do</div><div><span style="white-space:pre-wrap">    </span> not evaluate aBlock.  N.B.  This method is *not* implemented as a</div><div><span style="white-space:pre-wrap">     </span> primitive.  Primitive 198 always fails.  The VM uses prim 198 in a</div><div><span style="white-space:pre-wrap">    </span> context's method as the mark for an ensure:/ifCurtailed: activation."</div><div><span style="white-space:pre-wrap">  </span>| complete result |</div><div><span style="white-space:pre-wrap">      </span><primitive: 198></div><div><span style="white-space:pre-wrap">   </span>result := self valueNoContextSwitch.</div><div><span style="white-space:pre-wrap">     </span>complete := true.</div><div><span style="white-space:pre-wrap">        </span>^result</div><div> </div></div></div></div></blockquote><div><br></div><div><br></div><div><br></div>I did not mention an error code, I was talking about the "primitive failure code", referring to the Smalltalk code that gets invoked when the primitive fails (the three rows after the pragma).</div><div class="gmail_quote">This Smalltalk code does not touch the method's argument (aBlock), so it looks as if aBlock is never evaluated<br></div><div class="gmail_quote"><br></div><div class="gmail_quote">Florin<br></div></div>