[squeak-dev] Mirror primitives
Colin Putney
cputney at wiresong.ca
Mon Sep 7 20:47:44 UTC 2009
On 7-Sep-09, at 1:10 PM, Eliot Miranda wrote:
> I can imagine a way using withArgs:evaluate:. Compile the methods,
> save them in class variables of ContextPart and access them through a
> checking interface that only allows their execution in the context of
> the debugger. But I still think this is overkill. What, in Squeak,
> is to stop one compiling a method on ProtoObject and using it to
> subvert encapsulation on all objects? Nothing. So the issue of
> security is not made any worse by the introduction of the mirror
> primitives, but the debugger is enhanced significantly. So for me
> they're a clear win.
One year at StS I had a discussion with Travis about Trippy. He
mentioned to me that they had planned to use the mirror primitives for
Trippy, but ultimately found that it was better to do something
similar to what you describe above: compile a method that answers an
instvar then execute with the object as the receiver using the inverse
of #withArgs:evaluate: something like #valueWithReciever:args: on
CompiledMethod. This seems like a powerful and flexible approach to
me. You can do anything the object its self can do with its internal
state, but completely bypass message dispatch. Best of all there's
only one primitive required.
Admittedly a debugger involves a bit more than an inspector, but the
technique would seem to be applicable. Is there some reason that this
combined with traditional simulation wouldn't work well?
Colin
More information about the Squeak-dev
mailing list
|