[Glass] Understanding GciTsContinueWith
Iwan Vosloo
iwan at reahl.org
Fri Jul 30 12:12:07 PDT 2021
Thank you Norm.
I get it now.
Regards
Iwan
On 2021/07/30 16:53, Norm Green via Glass wrote:
> The case of (continueWithError != NULL) could be used after the
> execution has
> stopped at a breakpoint, and you want to continue from the breakpoint,
> signalling some error
> other than the breakpoint.
>
> The case of (continueWithError==NULL && replaceTopOfStack
> != OOP_ILLEGAL) could be
> used to replace self with some other object that would make sense in the
> context of the
> method at the top of the stack. For example if the top of stack
> signalled an Error, you
> could possibly replace self with an instance of Warning and continue
> execution .
>
> Replacing top of stack is useful after you have used
> GsProcess>>_trimStackToLevel:
> to trim signalling of an Error off of the stack and you want to alter
> self within the method
> that is now at top of stack .
>
>
>
>
> On 7/30/2021 6:57 AM, Iwan Vosloo via Glass wrote:
>> Hi there,
>>
>> I am trying to figure out how to use GciTsContinueWith and I don't
>> quite understand the comments (see below).
>>
>>
>> I can make it continue code after an exception (such as signalled from
>> a halt), but only if I pass NULL to continueWithError.
>>
>> If I pass in the error (GciErrSType) obtained after, say a perform, I
>> just keep getting the same error upon continuing.
>>
>> Perhaps what I don't understand is the idea here - what can I replace
>> the top of stack with?
>>
>> 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?
>>
>> Thank you
>> Iwan
>>
>> /*==============================================================================
>>
>> * GciTsContinueWith
>> *
>> * result is OOP_ILLEGAL if an error was returned in *err .
>> *
>> * If continueWithError is not NULL, continue execution by signalling
>> this
>> * error and replaceTopOfStack must be OOP_ILLEGAL . In this case,
>> * top frame of stack must be AbstractException>>signal
>> * or AbstractException >>_signalFromPrimitive .
>> *
>> * Within *continueWithError, if continueWithError->exceptionObj is
>> not OOP_NIL
>> * it is used to replace self in the top frame,
>> * otherwise continueWithError->number is used to construct a kind of
>> * AbstractException to replace self in the top frame.
>> * Then execution is restarted at start of top frame's method.
>> *
>> * replaceTopOfStack == OOP_ILLEGAL means TopOfStack will not be changed
>> */
>>
>>
>
>
> _______________________________________________
> Glass mailing list
> Glass at lists.gemtalksystems.com
> https://lists.gemtalksystems.com/mailman/listinfo/glass
>
--
More information about the Glass
mailing list