[Vm-dev] How to access Interpreter code from plugin?

Andreas Raab andreas.raab at gmx.de
Wed Oct 13 17:27:38 UTC 2010


On 10/13/2010 9:52 AM, Mariano Martinez Peck wrote:
> On Wed, Oct 13, 2010 at 6:31 PM, Igor Stasenko <siguctua at gmail.com
> <mailto:siguctua at gmail.com>> wrote:
>
>
>     Hi, Mariano.
>
>     I don't understand, why you need to dive into specific primitive(s),
>     while you can simply place a hook before entering any primitive
>
>
> is there a way to do this in a genera way or I need to do it manually
> for each primitive?

FWIW, it's questions like these that make people wonder if you've done 
your homework. The precise question is answered on page 620 of the blue 
book.

Cheers,
   - Andreas

>     and
>     mark all objects, which passed as parameters
>     (receiver & args) as 'used', and then call primitive function?
>
>
> The problem is that not all of them are "used" in all primitives. Just
> as an example, #bytecodeNew:
>
> bytecodePrimNew
>
>      messageSelector := self specialSelector: 28.
>      argumentCount := 0.
>      self normalSend.
>
> I don't want to trace the receiver there, but it is really not used
> there. I will trace it in #normalSend.
> Or sometimes a primitive fails because one of the arguments is more than
> 32bits or because it is not smallInteger or whatever...I don't want to
> mark them as used just for being a parameter. I want to mark them when
> they are really used by the VM.
>
> I want to avoid as much as overhead as possible.
>
> Right now I put the tracing in #normalSend, but then I modifed some
> bytecodes like those for #class or #== since they were not going
> throught normal send.
>
> Thanks
>
> Mariano


More information about the Vm-dev mailing list