<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <meta content="text/html; charset=UTF-8" http-equiv="Content-Type">
    <title></title>
  </head>
  <body bgcolor="#ffffff" text="#000000">
    Hi Facu, Hernán,<br>
    <br>
    I went whead and just pushed the changes as described below.<br>
    <br>
    Thank you Folks!<br>
    <br>
    Cheers,<br>
    <br>
    On 11/21/2023 5:45 PM, Hernán Wilkinson via Cuis-dev wrote:
    <blockquote
cite="mid:CAGgF3GwXn8L2aQ22BgU3ET5V_0zDN2_AoQKQHbbb2fsL=EGvrA@mail.gmail.com"
      type="cite">
      <div dir="ltr">I agree!</div>
      <br>
      <div class="gmail_quote">
        <div dir="ltr" class="gmail_attr">On Tue, Nov 21, 2023 at
          4:36 PM Juan Vuletich <<a moz-do-not-send="true"
            href="mailto:juan@cuis.st">juan@cuis.st</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 bgcolor="#ffffff"> Hi Folks,<br>
            <br>
            Great work!<br>
            <br>
            WRT Hernáns concern about modifying #resume, I agree, and
            suggest modifying #resumeProcess instead, so that the
            modified line reads:<br>
            <br>
                    interruptedProcess resolvePendingQuickReturns;
            resume ].<br>
            <br>
            WRT the fix to the problem shown by Hernán's example, it
            looks OK to me.<br>
            <br>
            If you both agreen, I'm willing to push the changes to
            GitHub.<br>
            <br>
            Thanks!<br>
            <br>
            On 11/18/2023 7:05 PM, Hernán Wilkinson via Cuis-dev wrote:
            <blockquote type="cite">
              <div dir="ltr">
                <div class="gmail_quote">
                  <div>Hi Facu,</div>
                  <div> </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>I'm looking into it—these errors are really
                        tough to debug!</div>
                      <div>The problem arises when you try to debug an
                        exception: in your code example, <font
                          face="monospace">Customer
                          class>>#importCustomers</font> throws an
                        exception because the file input.txt does not
                        exist, therefore <font face="monospace">line</font>
                        is <font face="monospace">nil</font><font
                          face="arial, sans-serif">.</font></div>
                    </div>
                  </blockquote>
                  <div><br>
                  </div>
                  <div>oh! that is because I forgot to send you the
                    file, but create a file called input.txt or replace
                    the file with a ReadStream. That is not the problem
                    I had.</div>
                  <div>Replace the opening of the file with:</div>
                  <div>inputStream := ReadStream on: 'C,a,b,d,1122'.<br>
                  </div>
                  <div>That will help you reproduce the error. You have
                    to step over until the [ line notNil ] </div>
                  <div> </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><br>
                      </div>
                      <div>📝 Here's what I've found so far:</div>
                      <div>In my previous changeset, I changed the <font
                          face="monospace">InstructionStream>>#willReturn</font>
                        method so that it'll stop before actually
                        performing a quick return once you step into it.
                        This is used from <font face="monospace">ContextPart>>#stepToSendOrReturn</font> (👈 notice

                        the message name).</div>
                      <div>While I was debugging this issue, I realized
                        that there's also another place where something
                        similar is done: <font face="monospace">ContextPart>>#runUntilErrorOrReturnFrom:</font>.
                        This is used, for example, when you perform a
                        "through" action. As a quick return method can
                        only return an object, I changed <span
                          style="font-family: monospace;">#runUntilErrorOrReturnFrom:</span> to

                        just do that instead of going through the rest
                        of the logic.</div>
                      <div><br>
                      </div>
                      <div>I attach a fileout of the changes to <span
                          style="font-family: monospace;">ContextPart>>#runUntilErrorOrReturnFrom:</span>.
                        It should be filed-in after having applied the
                        original changeset, and it should fix the
                        problem.</div>
                      <div>I don't think this is an elegant solution,
                        but I want you to try it to see if it works on
                        your tests or if you find more problems.</div>
                    </div>
                  </blockquote>
                  <div><br>
                  </div>
                  <div>With this fix, the problem I describe above is
                    gone, so it fixes the issue.</div>
                  <div><br>
                  </div>
                  <div>Cheers!</div>
                  <div>Hernan.</div>
                  <div><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><br>
                      </div>
                      <div>I'll keep looking into it!</div>
                      <div>Cheers!<br>
                        Facu<br>
                        <br>
                        <br>
                      </div>
                    </div>
                    <br>
                    <div class="gmail_quote">
                      <div dir="ltr" class="gmail_attr">El mar, 14 nov
                        2023 a las 9:35, Hernán Wilkinson (<<a
                          moz-do-not-send="true"
                          href="mailto:hernan.wilkinson@10pines.com"
                          target="_blank">hernan.wilkinson@10pines.com</a>>)

                        escribió:<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">Hi Facu,
                          <div> there is an error with this change. I do
                            not know exactly what it is, but you can
                            reproduce it by filing in the attached file
                            and debugging importCustomers from Customer
                            class (it is a class method). The error
                            happens when doing step over in [ line
                            notNil ] whileTrue: ...</div>
                        </div>
                        <br>
                        <div class="gmail_quote">
                          <div dir="ltr" class="gmail_attr">On Tue, Nov
                            14, 2023 at 8:07 AM Hernán Wilkinson <<a
                              moz-do-not-send="true"
                              href="mailto:hernan.wilkinson@10pines.com"
                              target="_blank">hernan.wilkinson@10pines.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">This is so great!! It is a
                              really important feature when doing TDD
                              and the first implementation of a method
                              is a ^true or similar.
                              <div>The only concern I have is the change
                                in Process>>#resume, because that
                                impacts all the situations where #resume
                                is sent... I know the impact is low, but
                                is it possible to restrict that change
                                to the debugger only or not?</div>
                              <div><br>
                              </div>
                              <div>Cheers!</div>
                              <div>Hernan.</div>
                            </div>
                            <br>
                            <div class="gmail_quote">
                              <div dir="ltr" class="gmail_attr">On Mon,
                                Nov 13, 2023 at 8:28 PM Facundo Javier
                                Gelatti via Cuis-dev <<a
                                  moz-do-not-send="true"
                                  href="mailto:cuis-dev@lists.cuis.st"
                                  target="_blank">cuis-dev@lists.cuis.st</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">Hi!<br>
                                  I attach some code to be able to step
                                  into quick return methods from the
                                  debugger, and there's also <a
                                    moz-do-not-send="true"
href="https://drive.google.com/file/d/1Iv5-hJ4TNjmR0pG-qm02KpTxCvKzsDZC/view?usp=sharing"
                                    target="_blank">a demo video</a>.
                                  Being able to step into a quick return
                                  method is very useful, especially in
                                  situations where we are doing TDD
                                  (because the first implementation of a
                                  method probably ends up being a quick
                                  return).<br>
                                  <br>
                                  Most of these changes were developed
                                  during the Camp Smalltalk event of the
                                  Smalltalks 2023 conference by me, Juan
                                  Vuletich and Felipe Zak (thank you
                                  guys!).<br>
                                  <br>
                                  I included automated tests for various
                                  debugging scenarios. The class <font
                                    face="monospace">QuickReturnDebuggingTest</font> should

                                  probably be moved to an appropriate
                                  category (it's currently in the
                                  "Smalltalks 2023" category, just
                                  because the changes were developed
                                  during the conference) or be merged
                                  into another existing test class (I
                                  wasn't sure where to put it).<br>
                                  <br>
                                  ℹ️ Extra interesting info: there are
                                  other places in which we're currently
                                  treating quick return methods in a
                                  special way. See for example <font
                                    face="monospace">Debugger>>#contents:notifying:</font>,
                                  which handles the special case of a
                                  normal method becoming a quick return
                                  method after saving the changes on the
                                  debugger (the stack frame is removed
                                  in that case, try it!). As a
                                  curiosity, another quirk related to
                                  quick returns is that you cannot debug
                                  an expression that will compile to a
                                  quick return (e.g. <font
                                    face="monospace">^2</font>), the
                                  debugger simply doesn't show up! None
                                  of this is modified on the code I'm
                                  submitting.<br>
                                  <br>
                                  I include a summary of the changes
                                  below, that could be useful during
                                  code review 👇<br>
                                  <br>
                                  Cheers!<br>
                                  Facu<br>
                                  <div><br>
                                    <hr style="color: rgb(0, 0, 0);
                                      font-family: "Times New
                                      Roman"; font-size: medium;"></div>
                                  📝 Changes summary:<br>
                                  <ul>
                                    <li style="margin-left: 15px;">Do
                                      not run a quick return as a
                                      primitive in <font
                                        face="monospace">ContextPart>>#send:to:with:lookupIn:</font>,
                                      treat it as a normal instruction
                                      —before which we can stop— and
                                      create a new stack frame for it.</li>
                                    <li style="margin-left: 15px;">Refactor:

                                      extracted an <font
                                        face="monospace">isPrimitive</font> variable

                                      in <font face="monospace">ContextPart>>#send:to:with:lookupIn:</font>,
                                      to avoid having repeated code.</li>
                                    <li style="margin-left: 15px;">Changed <font
                                        face="monospace">InstructionStream>>#willReturn</font> to

                                      include quick returns there. This
                                      ends up telling the debugger that
                                      it's possible to pause the
                                      execution there.</li>
                                    <li style="margin-left: 15px;">In <font
                                        face="monospace">Process>>#resume</font>,
                                      resolve pending quick returns
                                      before running <font
                                        face="monospace">#primitiveResume</font>,
                                      so that the VM can resume the
                                      process without having an
                                      unexpected stack frame (if you
                                      remove this, the VM crashes).</li>
                                    <li style="margin-left: 15px;">Refactor:

                                      extracted the method <font
                                        face="monospace">Debugger
                                        class>>#newDebugging:</font>,
                                      which is useful for tests (because
                                      it does not open the debugger UI).</li>
                                  </ul>
                                </div>
                                -- <br>
                                Cuis-dev mailing list<br>
                                <a moz-do-not-send="true"
                                  href="mailto:Cuis-dev@lists.cuis.st"
                                  target="_blank">Cuis-dev@lists.cuis.st</a><br>
                                <a moz-do-not-send="true"
                                  href="https://lists.cuis.st/mailman/listinfo/cuis-dev"
                                  rel="noreferrer" target="_blank">https://lists.cuis.st/mailman/listinfo/cuis-dev</a><br>
                              </blockquote>
                            </div>
                            <br clear="all">
                            <div><br>
                            </div>
                            <span class="gmail_signature_prefix">-- </span><br>
                            <div dir="ltr" class="gmail_signature">
                              <div dir="ltr">
                                <div>
                                  <div dir="ltr">
                                    <div style="font-size: small;">
                                      <div dir="ltr">
                                        <div dir="ltr">
                                          <div style="font-size:
                                            12.8px;"><span
                                              style="font-family:
                                              tahoma,sans-serif;
                                              font-size: xx-small;
                                              border-collapse:
                                              collapse;"><strong><span
                                                  style="font-size:
                                                  8pt;"><span
                                                    style="font-size:
                                                    small;"><font
                                                      size="2"><span
                                                        style="font-weight:
                                                        normal;"><span
                                                          style="font-weight:
                                                          bold;">Hernán
                                                          Wilkinson</span><br>
                                                        Agile Software
                                                        Development,
                                                        Teaching &
                                                        Coaching</span></font></span></span></strong></span></div>
                                          <div style="font-size:
                                            12.8px;"><span
                                              style="font-family:
                                              tahoma,sans-serif;
                                              font-size: xx-small;
                                              border-collapse:
                                              collapse;"><strong><span
                                                  style="font-size:
                                                  8pt;"><span
                                                    style="font-size:
                                                    small;"><font
                                                      size="2"><span
                                                        style="font-weight:
                                                        normal;">Phone:
                                                        +54-011</span></font></span></span></strong></span><font
                                              size="2" face="tahoma,
                                              sans-serif">-4893-2057</font></div>
                                          <div style="font-size:
                                            12.8px;"><strong
                                              style="font-family:
                                              tahoma,sans-serif;
                                              font-size: xx-small;"><span
                                                style="font-size: 8pt;"><span
                                                  style="font-size:
                                                  small;"><font size="2"><span
                                                      style="font-weight:
                                                      normal;">Twitter:
                                                      @HernanWilkinson</span></font></span></span></strong></div>
                                          <div style="font-size:
                                            12.8px;"><span
                                              style="font-family:
                                              tahoma,sans-serif;
                                              font-size: xx-small;
                                              border-collapse:
                                              collapse;"><strong><span
                                                  style="font-size:
                                                  8pt;"><span
                                                    style="font-size:
                                                    small;"><font
                                                      size="2"><span
                                                        style="font-weight:
                                                        normal;">site: <a
moz-do-not-send="true" href="http://www.10pines.com/" style="color:
                                                          rgb(17, 65,
                                                          112);"
                                                          target="_blank">http://www.10Pines.com</a></span></font></span></span></strong></span></div>
                                          <div style="font-size:
                                            12.8px;"><font face="tahoma,
                                              sans-serif"><span
                                                style="border-collapse:
                                                collapse;">Address: Alem
                                                896</span></font>, Floor
                                            6, Buenos Aires, Argentina</div>
                                        </div>
                                      </div>
                                    </div>
                                  </div>
                                </div>
                              </div>
                            </div>
                          </blockquote>
                        </div>
                        <br clear="all">
                        <div><br>
                        </div>
                        <span class="gmail_signature_prefix">-- </span><br>
                        <div dir="ltr" class="gmail_signature">
                          <div dir="ltr">
                            <div>
                              <div dir="ltr">
                                <div style="font-size: small;">
                                  <div dir="ltr">
                                    <div dir="ltr">
                                      <div style="font-size: 12.8px;"><span
                                          style="font-family:
                                          tahoma,sans-serif; font-size:
                                          xx-small; border-collapse:
                                          collapse;"><strong><span
                                              style="font-size: 8pt;"><span
                                                style="font-size:
                                                small;"><font size="2"><span
                                                    style="font-weight:
                                                    normal;"><span
                                                      style="font-weight:
                                                      bold;">Hernán
                                                      Wilkinson</span><br>
                                                    Agile Software
                                                    Development,
                                                    Teaching &
                                                    Coaching</span></font></span></span></strong></span></div>
                                      <div style="font-size: 12.8px;"><span
                                          style="font-family:
                                          tahoma,sans-serif; font-size:
                                          xx-small; border-collapse:
                                          collapse;"><strong><span
                                              style="font-size: 8pt;"><span
                                                style="font-size:
                                                small;"><font size="2"><span
                                                    style="font-weight:
                                                    normal;">Phone:
                                                    +54-011</span></font></span></span></strong></span><font
                                          size="2" face="tahoma,
                                          sans-serif">-4893-2057</font></div>
                                      <div style="font-size: 12.8px;"><strong
                                          style="font-family:
                                          tahoma,sans-serif; font-size:
                                          xx-small;"><span
                                            style="font-size: 8pt;"><span
                                              style="font-size: small;"><font
                                                size="2"><span
                                                  style="font-weight:
                                                  normal;">Twitter:
                                                  @HernanWilkinson</span></font></span></span></strong></div>
                                      <div style="font-size: 12.8px;"><span
                                          style="font-family:
                                          tahoma,sans-serif; font-size:
                                          xx-small; border-collapse:
                                          collapse;"><strong><span
                                              style="font-size: 8pt;"><span
                                                style="font-size:
                                                small;"><font size="2"><span
                                                    style="font-weight:
                                                    normal;">site: <a
                                                      moz-do-not-send="true"
href="http://www.10pines.com/" style="color: rgb(17, 65, 112);"
                                                      target="_blank">http://www.10Pines.com</a></span></font></span></span></strong></span></div>
                                      <div style="font-size: 12.8px;"><font
                                          face="tahoma, sans-serif"><span
                                            style="border-collapse:
                                            collapse;">Address: Alem 896</span></font>,
                                        Floor 6, Buenos Aires, Argentina</div>
                                    </div>
                                  </div>
                                </div>
                              </div>
                            </div>
                          </div>
                        </div>
                      </blockquote>
                    </div>
                  </blockquote>
                </div>
                <br clear="all">
                <div><br>
                </div>
                <span class="gmail_signature_prefix">-- </span><br>
                <div dir="ltr" class="gmail_signature">
                  <div dir="ltr">
                    <div>
                      <div dir="ltr">
                        <div style="font-size: small;">
                          <div dir="ltr">
                            <div dir="ltr">
                              <div style="font-size: 12.8px;"><span
                                  style="font-family: tahoma,sans-serif;
                                  font-size: xx-small; border-collapse:
                                  collapse;"><strong><span
                                      style="font-size: 8pt;"><span
                                        style="font-size: small;"><font
                                          size="2"><span
                                            style="font-weight: normal;"><span
                                              style="font-weight: bold;">Hernán
                                              Wilkinson</span><br>
                                            Agile Software Development,
                                            Teaching & Coaching</span></font></span></span></strong></span></div>
                              <div style="font-size: 12.8px;"><span
                                  style="font-family: tahoma,sans-serif;
                                  font-size: xx-small; border-collapse:
                                  collapse;"><strong><span
                                      style="font-size: 8pt;"><span
                                        style="font-size: small;"><font
                                          size="2"><span
                                            style="font-weight: normal;">Phone:
                                            +54-011</span></font></span></span></strong></span><font
                                  size="2" face="tahoma, sans-serif">-4893-2057</font></div>
                              <div style="font-size: 12.8px;"><strong
                                  style="font-family: tahoma,sans-serif;
                                  font-size: xx-small;"><span
                                    style="font-size: 8pt;"><span
                                      style="font-size: small;"><font
                                        size="2"><span
                                          style="font-weight: normal;">Twitter:
                                          @HernanWilkinson</span></font></span></span></strong></div>
                              <div style="font-size: 12.8px;"><span
                                  style="font-family: tahoma,sans-serif;
                                  font-size: xx-small; border-collapse:
                                  collapse;"><strong><span
                                      style="font-size: 8pt;"><span
                                        style="font-size: small;"><font
                                          size="2"><span
                                            style="font-weight: normal;">site: <a
                                              moz-do-not-send="true"
                                              href="http://www.10pines.com/"
                                              style="color: rgb(17, 65,
                                              112);" target="_blank">http://www.10Pines.com</a></span></font></span></span></strong></span></div>
                              <div style="font-size: 12.8px;"><font
                                  face="tahoma, sans-serif"><span
                                    style="border-collapse: collapse;">Address:

                                    Alem 896</span></font>, Floor 6,
                                Buenos Aires, Argentina</div>
                            </div>
                          </div>
                        </div>
                      </div>
                    </div>
                  </div>
                </div>
              </div>
            </blockquote>
            <br>
            <br>
            <pre cols="72">-- 
Juan Vuletich
<a moz-do-not-send="true" href="http://cuis.st" target="_blank">cuis.st</a>
<a moz-do-not-send="true" href="http://github.com/jvuletich" target="_blank">github.com/jvuletich</a>
<a moz-do-not-send="true" href="http://researchgate.net/profile/Juan-Vuletich" target="_blank">researchgate.net/profile/Juan-Vuletich</a>
<a moz-do-not-send="true" href="http://independent.academia.edu/JuanVuletich" target="_blank">independent.academia.edu/JuanVuletich</a>
<a moz-do-not-send="true" href="http://patents.justia.com/inventor/juan-manuel-vuletich" target="_blank">patents.justia.com/inventor/juan-manuel-vuletich</a>
<a moz-do-not-send="true" href="http://linkedin.com/in/juan-vuletich-75611b3" target="_blank">linkedin.com/in/juan-vuletich-75611b3</a>
<a moz-do-not-send="true" href="http://twitter.com/JuanVuletich" target="_blank">twitter.com/JuanVuletich</a></pre>
          </div>
        </blockquote>
      </div>
      <br clear="all">
      <div><br>
      </div>
      <span class="gmail_signature_prefix">-- </span><br>
      <div dir="ltr" class="gmail_signature">
        <div dir="ltr">
          <div>
            <div dir="ltr">
              <div style="font-size: small;">
                <div dir="ltr">
                  <div dir="ltr">
                    <div style="font-size: 12.8px;"><span
                        style="font-family: tahoma,sans-serif;
                        font-size: xx-small; border-collapse: collapse;"><strong><span
                            style="font-size: 8pt;"><span
                              style="font-size: small;"><font size="2"><span
                                  style="font-weight: normal;"><span
                                    style="font-weight: bold;">Hernán
                                    Wilkinson</span><br>
                                  Agile Software Development, Teaching
                                  & Coaching</span></font></span></span></strong></span></div>
                    <div style="font-size: 12.8px;"><span
                        style="font-family: tahoma,sans-serif;
                        font-size: xx-small; border-collapse: collapse;"><strong><span
                            style="font-size: 8pt;"><span
                              style="font-size: small;"><font size="2"><span
                                  style="font-weight: normal;">Phone:
                                  +54-011</span></font></span></span></strong></span><font
                        size="2" face="tahoma, sans-serif">-4893-2057</font></div>
                    <div style="font-size: 12.8px;"><strong
                        style="font-family: tahoma,sans-serif;
                        font-size: xx-small;"><span style="font-size:
                          8pt;"><span style="font-size: small;"><font
                              size="2"><span style="font-weight:
                                normal;">Twitter: @HernanWilkinson</span></font></span></span></strong></div>
                    <div style="font-size: 12.8px;"><span
                        style="font-family: tahoma,sans-serif;
                        font-size: xx-small; border-collapse: collapse;"><strong><span
                            style="font-size: 8pt;"><span
                              style="font-size: small;"><font size="2"><span
                                  style="font-weight: normal;">site: <a
                                    moz-do-not-send="true"
                                    href="http://www.10pines.com/"
                                    style="color: rgb(17, 65, 112);"
                                    target="_blank">http://www.10Pines.com</a></span></font></span></span></strong></span></div>
                    <div style="font-size: 12.8px;"><font face="tahoma,
                        sans-serif"><span style="border-collapse:
                          collapse;">Address: Alem 896</span></font>,
                      Floor 6, Buenos Aires, Argentina</div>
                  </div>
                </div>
              </div>
            </div>
          </div>
        </div>
      </div>
    </blockquote>
    <br>
    <br>
    <pre class="moz-signature" cols="72">-- 
Juan Vuletich
cuis.st
github.com/jvuletich
researchgate.net/profile/Juan-Vuletich
independent.academia.edu/JuanVuletich
patents.justia.com/inventor/juan-manuel-vuletich
linkedin.com/in/juan-vuletich-75611b3
twitter.com/JuanVuletich</pre>
  </body>
</html>