<br><br><div class="gmail_quote">On Fri, May 7, 2010 at 2:30 AM, Mariano Martinez Peck <span dir="ltr">&lt;<a href="mailto:marianopeck@gmail.com">marianopeck@gmail.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
 <br>Hi folks. I need to intercept ALL message sends. For the moment, I intercepted in Interpreter &gt;&gt; normalSend<br><br>But now, I have a question: I know there is that specialObjectArray that contain objects that may be accessed by the VM.<br>

<br>So, the first question is, they are only ACCESSED and to things with pointers or they also send messages to those objects from the VM?<br></blockquote><div><br></div><div>Only accessed. The Interpreter has specialObjectsArray as one of its object references (along with nil, true, false) and indexes it with indices stored in class variables such as SpecialSelectors, CharacterTable, ClassMessage et al.  See implementors and senders of splObj:.</div>
<div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;"><br>If the VM really send messages to those object, how that is done ?  The code goes also by normalSend ? Or they go from somewhere else that I am not intercepting.<br>
</blockquote><div><br></div><div>At the bottom the VM has to access objects directly to avoid infinite regress.  So the only sends are in response to send bytecodes, the perform: primitives, and other edge cases (looking up run:with:in: in the invoke-object-as-method prim and looking up a callback entry point in the Alien FFI).</div>
<div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
<br>Thank you very much.<br><br>Mariano<br></blockquote><div><br></div><div>chers</div><div>Eliot </div></div><br>