<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  </head>
  <body>
    <div class="gmail_default"
      style="font-family:arial,helvetica,sans-serif;font-size:small">The
      case of  (continueWithError != NULL)  could be used after the
      execution has</div>
    <div class="gmail_default"
      style="font-family:arial,helvetica,sans-serif;font-size:small">stopped
      at a breakpoint, and you want to continue from the breakpoint,
      signalling some error</div>
    <div class="gmail_default"
      style="font-family:arial,helvetica,sans-serif;font-size:small">other
      than the breakpoint.    </div>
    <div class="gmail_default"
      style="font-family:arial,helvetica,sans-serif;font-size:small"><br>
    </div>
    <div class="gmail_default"
      style="font-family:arial,helvetica,sans-serif;font-size:small">The
      case of  (continueWithError==NULL && replaceTopOfStack
      != OOP_ILLEGAL) could be</div>
    <div class="gmail_default"
      style="font-family:arial,helvetica,sans-serif;font-size:small">used
      to replace self with some other object that would make sense in
      the context of the</div>
    <div class="gmail_default"
      style="font-family:arial,helvetica,sans-serif;font-size:small">method
      at the top of the stack.  For example if the top of stack
      signalled an Error, you</div>
    <div class="gmail_default"
      style="font-family:arial,helvetica,sans-serif;font-size:small">could
      possibly replace  self with an instance of Warning and continue
      execution .</div>
    <div class="gmail_default"
      style="font-family:arial,helvetica,sans-serif;font-size:small"><br>
    </div>
    <div class="gmail_default"
      style="font-family:arial,helvetica,sans-serif;font-size:small">Replacing
      top of stack is  useful after you have used
      GsProcess>>_trimStackToLevel: </div>
    <div class="gmail_default"
      style="font-family:arial,helvetica,sans-serif;font-size:small">to
      trim signalling of an Error off of the stack and you want to alter
      self within the method</div>
    <div class="gmail_default"
      style="font-family:arial,helvetica,sans-serif;font-size:small">that
      is now at top of stack .</div>
    <div class="gmail_default"
      style="font-family:arial,helvetica,sans-serif;font-size:small"><br>
      <br>
    </div>
    <br>
    <br>
    <div class="moz-cite-prefix">On 7/30/2021 6:57 AM, Iwan Vosloo via
      Glass wrote:<br>
    </div>
    <blockquote type="cite"
      cite="mid:3cabf17e-0d23-e77f-423c-52101f9fa5b9@reahl.org">Hi
      there,
      <br>
      <br>
      I am trying to figure out how to use GciTsContinueWith and I don't
      quite understand the comments (see below).
      <br>
      <br>
      <br>
      I can make it continue code after an exception (such as signalled
      from a halt), but only if I pass NULL to continueWithError.
      <br>
      <br>
      If I pass in the error (GciErrSType) obtained after, say a
      perform, I just keep getting the same error upon continuing.
      <br>
      <br>
      Perhaps what I don't understand is the idea here - what can I
      replace the top of stack with?
      <br>
      <br>
      I would like to understand enough to eventually be able to debug
      gemstone code (eg, step) via this interface. Can I do this via
      GciTsContinueWith?
      <br>
      <br>
      Thank you
      <br>
      Iwan
      <br>
      <br>
/*==============================================================================
      <br>
       *  GciTsContinueWith
      <br>
       *
      <br>
       *  result is OOP_ILLEGAL if an error was returned in *err .
      <br>
       *
      <br>
       *  If continueWithError is not NULL, continue execution by
      signalling this
      <br>
       *  error and replaceTopOfStack must be OOP_ILLEGAL . In this
      case,
      <br>
       *  top frame of stack must be AbstractException>>signal
      <br>
       *  or   AbstractException >>_signalFromPrimitive .
      <br>
       *
      <br>
       *  Within *continueWithError, if
      continueWithError->exceptionObj is not OOP_NIL
      <br>
       *  it is used to replace self in the top frame,
      <br>
       *  otherwise continueWithError->number is used to construct a
      kind of
      <br>
       *  AbstractException to replace self in the top frame.
      <br>
       *  Then execution is restarted at start of top frame's method.
      <br>
       *
      <br>
       *  replaceTopOfStack == OOP_ILLEGAL means TopOfStack will not be
      changed
      <br>
       */
      <br>
      <br>
      <br>
    </blockquote>
    <br>
  </body>
</html>