On Wed, Oct 13, 2010 at 7:27 PM, Andreas Raab andreas.raab@gmx.de wrote:
On 10/13/2010 9:52 AM, Mariano Martinez Peck wrote:
On Wed, Oct 13, 2010 at 6:31 PM, Igor Stasenko <siguctua@gmail.com mailto:siguctua@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.
Is it so hard to answer in a ploite way??
If you read my first line of the email says "Hi. Sorry if the question is newbie. I am still reading the blue book, so in case this is explained there I would just appreciate a link to it. "
is it really hard to understand and simply answer page 620 ?
Anyway, those were not my original questions.
Thanks
Mariano
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