<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>