[jboss-jira] [JBoss JIRA] (JASSIST-241) VerifyError: Expecting a stackmap frame - Switch case statement Java 7

Shigeru Chiba (JIRA) issues at jboss.org
Sat Jan 24 11:17:49 EST 2015


    [ https://issues.jboss.org/browse/JASSIST-241?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13034750#comment-13034750 ] 

Shigeru Chiba commented on JASSIST-241:
---------------------------------------

I think your problem analysis is right.  Thanks, it helps bug fixing lots!

> VerifyError: Expecting a stackmap frame - Switch case statement Java 7
> ----------------------------------------------------------------------
>
>                 Key: JASSIST-241
>                 URL: https://issues.jboss.org/browse/JASSIST-241
>             Project: Javassist
>          Issue Type: Bug
>    Affects Versions: 3.19.0-GA
>         Environment: jdk7
>            Reporter: Patson Luk
>            Assignee: Shigeru Chiba
>
> This could be a duplicate of issue 215 and 205. 
> Tested it on the master (3.19.0-GA) with java 7. Running the below class
> {code}
> import java.util.Random;
> import javassist.ClassPool;
> import javassist.CtClass;
> import javassist.CtMethod;
> public class TestDriver {
>     public static void main(String[] args) throws Exception {
>         ClassPool pool  = ClassPool.getDefault();
>         CtClass cc = pool.get("TestClass");
>         
>         CtMethod testMethod = cc.getMethod("test", "(Ljava/lang/Object;)V");
>         testMethod.insertAfter("System.out.println(\"inserted!\");");
>         cc.toClass();
>         //invoke it
>         TestClass.test(new Object());
>     }
> }
> class TestClass {
>     public static void test(Object o) {
>         //part 1
>         if (o == null) {
>             return;
>         }
>         //part 2
>         int oper = new Random().nextInt();
>         switch (oper) {
>         case 1:
>             break;
>         }
>     }
> }
> {code}
>  
> Triggers error message as below:
> {quote}
> Exception in thread "main" java.lang.VerifyError: Expecting a stackmap frame at branch target 9 in method TestClass.test(Ljava/lang/Object;)V at offset 1
> 	at TestDriver.main(TestDriver.java:19)
> {quote}
> *Please take note that:*
> # This is observed on Java 7. When the same code is run on Java 6, it is fine
> # Both the "part 1" - return statement (commented in the code above) and "part 2" - switch/case statement have to be there to trigger the error. If either of those are commented out, then the code runs fine



--
This message was sent by Atlassian JIRA
(v6.3.11#6341)


More information about the jboss-jira mailing list