Ok....I found the problem....it was what you said, but it was difficult for me.

I had this:

AbstractCompiledMethodProxy >> doesNotUnderstand: aMessage
    self mareaIsProxyInstalled
        ifTrue: [ ^ CompiledMethodProxyHandler mareaHandleDoesNotUnderstand: aMessage forProxy: self]
        ifFalse: [ ^ super doesNotUnderstand: aMessage ].
   
and I thought that ALL classes extend from ProtoObject, and not from nil (I thought the only subclass from nil was ProtoObject). But I was wrong, nil has another subclass: PseudoContext.
So...I was trying to swap out/in a CompiledMethod of PseudoContext, which of course, crashed the VM, because the #doesNotUnderstand: was not found in  PseudoContext.

Funny, I learnt :)

Cheers

Mariano


On Tue, Dec 7, 2010 at 1:52 PM, Mariano Martinez Peck <marianopeck@gmail.com> wrote:
In my case, the proxy class is CompiledMethodProxy and it is a subclass of AbstractCompiledMethodProxy which is a subclass of ProtoObject.

In AbstractCompiledMethodProxy I have:

AbstractCompiledMethodProxy >> doesNotUnderstand: aMessage
    self mareaIsProxyInstalled
        ifTrue: [ ^ CompiledMethodProxyHandler mareaHandleDoesNotUnderstand: aMessage forProxy: self]
        ifFalse: [ ^ super doesNotUnderstand: aMessage ].
   
   
CompiledMethodProxy >> mareaIsProxyInstalled
    ^ fileName isNil not

Now....I was checking in VM side, method Interpreter >> lookupMethodInClass: class
and still cannot understand how can I get a  'Recursive not understood error encountered'  error, because in the previous loop, it MUST find the method dnu, since it is implemented in ProtoObject.  I am confused :(

Thanks in advance for any help

Mariano




On Mon, Dec 6, 2010 at 10:09 PM, Mariano Martinez Peck <marianopeck@gmail.com> wrote:


On Mon, Dec 6, 2010 at 8:34 PM, John M McIntosh <johnmci@smalltalkconsulting.com> wrote:

On 2010-12-06, at 12:38 AM, Mariano Martinez Peck wrote:
You should look at the Objective-C bridge I wrote  , the Objective-C proxy object  that is based on ProtoObject and contains the 
required methods to ensure a debugger will come up. It *does* override does not understand so it can transform the unknown 
message into a primitive call. 

Excellent!! How can I load such code?  (squeaksource is down now and I cannot search)

Thanks John!

Mariano
 


Thanks John, I found it once SqueakSource came back. Now, I still don't understand how is this (adding some methods to ProtoObject for debugging, inspecting, printing) related to the "Recursive not understood error encountered" crash ?  or this is just extra help information ? ;)
 
Cheers

Mariano


--
===========================================================================
John M. McIntosh <johnmci@smalltalkconsulting.com>   Twitter:  squeaker68882
Corporate Smalltalk Consulting Ltd.  http://www.smalltalkconsulting.com
===========================================================================