[Newbies] How to introspect method instance variables

Michael van der Gulik mikevdg at gmail.com
Tue Aug 25 02:34:18 UTC 2009

On Tue, Aug 25, 2009 at 2:16 PM, rdmerrio <rdmerrio at gmail.com> wrote:

> I have defined a method, i.e.,
> someMethod
>   anInstVariable := anotherInstVariable1 + anotherInstVariable2.
> I would like to intercept the acceptance of this method by the browser and
> programatically determine what instance variables this method is using so
> that I can grab these names for other processing tasks.
> Additionally, I would really like to be able to determine what instance
> variables are being assigned to, for instance, anInstVariable in this case
> and which ones are the "independent" instance variables,
> anotherInstVariable1 and anotherInstVariable2 in this case.
> How can I do this?

Why? What are you trying to achieve? You're talking about some pretty
intrusive techniques. Unless you're developing a code analyser of some sort,
you probably should be looking at a better way of doing what you're doing.

To capture the acceptance of a method (assuming you mean the action that
happens when you press alt+s), you insert a bit of code into

To determine which instance variables are being assigned to, you'll need to
somehow look at the bytecodes. They're not too hard to analyse, but it can
be a bit of work. Alternatively, maybe the refactory browser can help, or
maybe you can look at the intermediate code that the compiler generates.

The bytecodes are described here:
They're in the "Blue book chapter 28" if you need to Google it. You'll want
the "store" bytecodes.

To see real bytecodes, either inspect "Morph>>#basicInitialize" to see a
CompiledMethod, or use the "byteCodes" view in a Browser (hidden behind the
"source" button).


-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.squeakfoundation.org/pipermail/beginners/attachments/20090825/11e7c388/attachment.htm

More information about the Beginners mailing list