Re: AnalyzerException with ASM 3.3
Rémi Forax <[email protected]>
| Newsgroups | gmane.comp.java.objectweb.asm |
|---|---|
| Message-ID | <[email protected]> |
It's perhaps related to that thread: http://mail-archive.ow2.org/asm/2010-08/msg00028.html Rémi Le 22/10/2010 23:11, Jonathan Byrne a écrit : > Hi ASM community, I'm using > > Analyzer a = new Analyzer(new SimpleVerifier(.....)); > a..analyze(....); > > in the 3.3 release of ASM to verify the correctness of bytecode which I > have *not* modified. On running the above code on Java2D - the Java > 2D demo which comes with the Sun/Oracle JDK - I get the following > error, when validating the following method: > > class: > java2d.demos.Arcs_Curves.Curves.class > > method: > render (IILjava/awt/Graphics2D;)V > > Error: > org.objectweb.asm.tree.analysis.AnalyzerException: Error in render at > instruction 326: Method owner: expected Ljava/awt/Shape;, but found > Ljava/lang/Object; > at org.objectweb.asm.tree.analysis.Analyzer.analyze(Analyzer.java:291) > > From the bytecode I can see why the error occurs and ASM resolves the > value for the stack frame at 327 by grabbing the return value from the > invokeinterface opcode. > > 323 -- LINENUMBER 120 L43 > 324 -- ALOAD 11 > 325 Ljava/lang/Object; -- ACONST_NULL > 326 Ljava/lang/Object;Lnull; -- INVOKEINTERFACE > java/awt/Shape.getPathIterator > (Ljava/awt/geom/AffineTransform;)Ljava/awt/geom/PathIterator; > 327 Ljava/awt/geom/PathIterator; -- ASTORE 12 > > However, this isn't the problem I ran into, but thought I'd mention this in > case it impacts on the error which occurs in the same method but a few > opcodes further down. The problem is: ASM stops computing stack frames > between 398 and 404 and I was wondering why? (Obviously I get a > null pointer exception when I try to query the stack frame at 404). > > 391 -- L16 > 392 -- FRAME FULL [java2d/demos/Arcs_Curves/Curves I I > java/awt/Graphics2D I java/awt/font/FontRenderContext > java/awt/font/TextLayout F F I I] [] > 393 -- ILOAD 10 > 394 I -- ICONST_3 > 395 II -- IF_ICMPLT L17 > 396 -- L52 > 397 -- LINENUMBER 134 L52 > 398 -- ILOAD 2 > 399 -- ICONST_2 > 400 -- IDIV > 401 -- BIPUSH 15 > 402 -- IADD > 403 -- I2F > 404 -- FSTORE 8 > 405 -- L53 > 406 -- LINENUMBER 83 L53 > 407 -- IINC 9 1 > 408 -- L13 > 409 -- FRAME FULL [java2d/demos/Arcs_Curves/Curves I I > java/awt/Graphics2D I java/awt/font/FontRenderContext > java/awt/font/TextLayout F F I] [] > 410 -- ILOAD 9 > 411 I -- ICONST_2 > 412 II -- IF_ICMPLT L14 > 413 -- L54 > 414 -- LINENUMBER 136 L54 > 415 -- RETURN > > I've attached the class file which causes the issue. And if you run > > java -cp asm-3.3.jar org.objectweb.asm.util.CheckClassAdapter Curves.class > > you can see where the stack frames are no longer computed: > > 00312 Curves I I Graphics2D I FontRenderContext TextLayout F F I I . . > . . : I : ICONST_3 > 00313 Curves I I Graphics2D I FontRenderContext TextLayout F F I I . . > . . : I I : IF_ICMPLT L3 > 00314 Curves I I Graphics2D I FontRenderContext TextLayout F F I I . . > . . : : ILOAD 2 > 00315 ? : ICONST_2 > 00316 ? : IDIV > 00317 ? : BIPUSH 15 > 00318 ? : IADD > 00319 ? : I2F > 00320 ? : FSTORE 8 > 00321 ? : IINC 9 1 > 00322 Curves I I Graphics2D I FontRenderContext TextLayout F F I . . . > . . : : L0 > 00323 Curves I I Graphics2D I FontRenderContext TextLayout F F I . . . > . . : : FRAME CHOP 1 > 00324 Curves I I Graphics2D I FontRenderContext TextLayout F F I . . . > . . : : ILOAD 9 > 00325 Curves I I Graphics2D I FontRenderContext TextLayout F F I . . . > . . : I : ICONST_2 > 00326 Curves I I Graphics2D I FontRenderContext TextLayout F F I . . . > . . : I I : IF_ICMPLT L1 > 00327 Curves I I Graphics2D I FontRenderContext TextLayout F F I . . . > . . : : RETURN > > BTW, I haven't checked to see if this error occurs in other releases of ASM. > > Any help would be greatly appreciated ! > > Regards for now... >
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