[squeak-dev] Strange primitives doing nothing
Igor Stasenko
siguctua at gmail.com
Fri Nov 7 16:46:45 UTC 2008
2008/11/7 stephane ducasse <stephane.ducasse at free.fr>:
> I may be wrong but it seems to me that this primitives are just there to
> mark the method.
> so that after the stack can is scanned for caller of 198 and 199 (on:do:)
>
Err.. what is actually happens when you 'marking a method'?
Maybe you meant a method context - which is activated when you entering method.
But to my sense this is common procedure regardless if method haves or
not haves the primitive.
I don't see a reason, why VM should do something extra when calling
primitive, because at the moment when primitive is invoked the
method's context is not created/reserved for a method - you got only
arguments on stack.
And then, since primitive fails, it should go to common procedure for
initializing & activating new context.
> Have a look in the answer I got in squeak dev this summer about my questions
> about exceptions.
>
I'll try to find it.
> stef
>
> On Nov 7, 2008, at 5:32 PM, Igor Stasenko wrote:
>
>> I'm exploring the exception support in VM, and found two strange
>> primitives used by BlockClosure, which simply fail and doing nothing.
>>
>> primitiveMarkUnwindMethod
>> "Primitive. Mark the method for exception unwinding. The primitive
>> must fail after marking the context so that the regular code is run."
>> self inline: false.
>> ^self primitiveFail
>>
>> primitiveMarkHandlerMethod
>> "Primitive. Mark the method for exception handling. The primitive
>> must fail after marking the context so that the regular code is run."
>> self inline: false.
>> ^self primitiveFail
>>
>> Any ideas, why they still in use? Can there be something in between,
>> when interpreter enters the method? Or, if nothing, then why they
>> still there? :)
>>
>> --
>> Best regards,
>> Igor Stasenko AKA sig.
>>
>>
>
>
>
--
Best regards,
Igor Stasenko AKA sig.
More information about the Squeak-dev
mailing list
|