VerifyError: Inconsistent args_size for opc_invokeinterface occured
for nested statement
----------------------------------------------------------------------------------------
Key: JASSIST-201
URL:
https://issues.jboss.org/browse/JASSIST-201
Project: Javassist
Issue Type: Bug
Affects Versions: 3.17.1-GA
Environment: Sun JRE6 1.6.0_25 64bits
Reporter: Hua Zhang
Assignee: Shigeru Chiba
Priority: Critical
Labels: VerifyError, nested, opc_invokeinterface
Fix For: 3.18.0-GA
Please see source in "steps to reproduce".
Running the code will throw error:
Exception in thread "main" java.lang.VerifyError: (class: Clazz, method: method
signature: ()V) Inconsistent args_size for opc_invokeinterface
at java.lang.Class.getDeclaredConstructors0(Native Method)
at java.lang.Class.privateGetDeclaredConstructors(Unknown Source)
at java.lang.Class.getConstructors(Unknown Source)
at test.<init>(test.java:27)
at test.main(test.java:31)
The key is on "new HashMap().toString()" in the statement:
theMethod.setBody("{map.put(\"name\", new
HashMap().toString());System.out.println(\"OK\");}");
The behaviour is really strange. Try to modify it, sometimes it can be run successfully,
sometimes failed. But they all can be compiled successfully.
FAILED:
theMethod.setBody("{StringBuffer buffer = new
StringBuffer();map.put(\"name\",
buffer.toString());System.out.println(\"OK\");}");
SUCCESS:
theMethod.setBody("{map.put(\"name\",
map.toString());System.out.println(\"OK\");}");
SUCCESS: (workaround)
theMethod.setBody("{String V = new HashMap().toString();map.put(\"name\",
V);System.out.println(\"OK\");}");
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: