<br><br><div class="gmail_quote">On Sun, Jan 16, 2011 at 1:26 PM, Igor Stasenko <span dir="ltr"><<a href="mailto:siguctua@gmail.com">siguctua@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
<br>
AFAIK, #cannotInterpret: is sent to super<br></blockquote><div><br>yes, I know, this is why in my case I implemented that in the superclass.<br> </div><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
<div><div></div><div class="h5"><br>
<br>
><br>
> Now, this is working, but there is something I DO NOT UNSERSTAND. When I try to do the "inst basicIdentityHash" the VM will send the #cannotInterpret to ProxySuperclass because the methodDict was nil in ClassProxyInstVar. Ok, perfect. What I don't understand is how the method #cannotInterptet can be run perfeclty in this case, since I am doing a "self class restore" there. Remember I removed the shortcut bytecode, so #class is sent like any normal message. So, my question is, when sending "self class", why the VM doesn't call #cannotInterpter again like it did it when I did " inst basicIdentityHash." ? in other words...why the VM isn't entering in a loop ? There is something I am not seeing.<br>
><br>
<br>
</div></div>check the bytecode of method. A special sends, which shortcutted using<br>
different bytecode.<br></blockquote><div><br>Yes, but I disable them, by evaluating: "(ParseNode classVarNamed: 'StdSelectors') removeKey: #class ifAbsent: []."<br> </div><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
<br>
To avoid self sends, which will lead to infinite loop, you can use the<br>
message's lookupClass to send message to class side:<br>
<br>
aMessage lookupClass restore.<br></blockquote><div><br><br>This is a good trick!!! This was really helpful Igor.<br><br>Anyway, now I found which was my problem. I mean, I understood why it was not causing a loop and was working instead. The thing is that I evaluated "(ParseNode classVarNamed: 'StdSelectors') removeKey: #class ifAbsent:
[]." but then I check the the implemenation of #cannotInterpret and it was still using the shortcut bytecode for #class. Why ? because I forget a Compiler recompileAll!!!! hehehehe :)<br><br>thanks<br><br>Mariano<br>
</div><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
<div><div></div><div class="h5"><br>
> Thanks for any help in advance,<br>
><br>
> Mariano<br>
><br>
><br>
<br>
<br>
<br>
</div></div><font color="#888888">--<br>
Best regards,<br>
Igor Stasenko AKA sig.<br>
</font></blockquote></div><br>