Hi Elliot, 2015-11-17 21:39 GMT-03:00 Eliot Miranda <eliot.miranda@gmail.com>:
Hi Esteban,
On Tue, Nov 17, 2015 at 1:37 PM, Esteban A. Maringolo <emaringolo@gmail.com> wrote:
(thisContext objectClass: object) isIndexable ifTrue: [size := thisContext objectSize: object]
I don't know if your code was meant to be accurate or just a guideline of how this could be implemented, but Context doesn't implement #objectClass: nor #objectSize:
Find attached. I think you'll find they are in the Spur version. You might think of back-porting their use in Context form Spur; that'll make the debugger able to handle proxies.
I added your methods to Context and created a EyeProtoInspector class which uses the mirror methods to access the object size and class. So far it works, or at least doesn't give me walkbalks, but if you do a little more than that you'll get fireworks :)
I know that dealing with Proxies and similar objects is tricky, I had to deal with my own subclasses of ProtoObject in Dolphin, but there the class implemented all that was needed to interact with the environment tools.
Well, the thing to think of is that inside the VM objects are just a sequence of words, and the VM, while it sends messages, doesn't send messages to objects to update their state; it just accesses the state directly. So in an execution simulation method such as
[snip]
which reaches into the object without sending any messages to it. I understand that this will appear in Spur, because I made it part of the bootstrap, but if I were you I would integrate these changes into the current version asap. The debugger won't work properly with proxies, encapsulators etc otherwise.
Yes, it doesn't right now, but not only for the debugger, but the problem as stated in other mails is with the tools, that seems to be designed without considering these special cases. Regards! Esteban A. Maringolo