Re: Re: AnalyzerAdapter: computed stack incorrect after super-constructor call?
Andreas Sewe <[email protected]>
| Newsgroups | gmane.comp.java.objectweb.asm |
|---|---|
| Organization | Software Technology Group, Technisch e Universität Darmstadt |
| Message-ID | <[email protected]> |
Hi Eugene,
thanks for the quick reply.
You wrote:
> I would have to look at this particular issue closer, but you should
> keep in mind that AnalyzerAdapter rely on the stackmap data stored in
> the bytecode and that data can be potentially incorrect or even
> absent.
In the example I gave there are no stack map frames stored in the class
file. After all, the constructor consists of just a single basic block.
> Also, in the stackmap data the first frame is omitted and
> AnalyzerAdapter is trying to recalculate it from the method signature
> (and owner's type). So, for the constructor ("<init>") initial value
> of variable 0 is UNINITIALIZED_THIS, but it gets replaced with value
> of the "owner" parameter passed to the AnalyzerAdapter constructor
> after first INVOKESPECIAL call on variable 0. So, you need to check
> that you have a correct "owner" value.
Yes, I just checked that and it is correct, i.e., Foo instead of Object.
But it's good to know that my interpretation is correct, i.e., that
UNINITIALIZED_THIS should morph into Foo, not into Object. I guess I now
have to do some digging and produce a simple test case so you can
reproduce this.
Best wishes,
Andreas Sewe
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