[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