Re: Invocation target runtime type for virtually invoked methods

Marcin Rzeźnicki <[email protected]>
Newsgroups gmane.comp.java.objectweb.asm
Message-ID <[email protected]>
On Tue, May 25, 2010 at 6:05 PM, Kuperberg, Michael <[email protected]> wrote:
> Hi all,
>
>
>
> I have a question about virtual methods, like in the following example:
>
>
>
> A a = new B();
>
> a.meth();
>
>
>
> meth() invoked using INVOKEVIRTUAL features the *declared* type of the
> invocation target in the bytecode, i.e. "INVOKEVIRTUAL a.meth()". But as I
> am interested in the *runtime* type of the invocation target, I need to
> analyse it.
>
>
>
> Of course, analysing the top element on the stack is an option (using
> getClass(), etc.), but: is there a faster and/or a more convenient option to
> do this using ASM?

I think that you could track NEW instruction (InstructionAdapter is
particularly handy for this) but generally I believe that this will
turn out to be infeasible. First of all you will have to do it on the
whole system level (for methods returning super type), furthermore the
real type often depends on runtime information (as in:
if (sth) a = new A1(); else a = new A2() )


-- 
Greetings
Marcin Rzeźnicki
message-footer.txt (text/plain, 238 B)
-- 
You receive this message as a subscriber of the [email protected] mailing list.
To unsubscribe: mailto:[email protected]
For general help: mailto:[email protected]?subject=help
OW2 mailing lists service home page: http://www.ow2.org/wws
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.