[
https://issues.jboss.org/browse/JASSIST-207?page=com.atlassian.jira.plugi...
]
Scott Marlow commented on JASSIST-207:
--------------------------------------
I'm still interested in an answer as to whether Ben can work around this issue. Also,
I would like to better understand the options for avoiding the error or getting a better
(earlier) one.
One thought is that inserting a return/throw expression, could mean that the (now) dead
code after the insertion point, isn't needed. I'm not yet sure if we try to do
this in any way currently or if this is even worth trying to do (either automatically or
via an additional API method call).
Or, maybe we just need to simply correct the stack map, so that an error is not thrown.
This sounds like the best option to me.
Inconsistent Stack Map when inserting throw Expression with Java 7
------------------------------------------------------------------
Key: JASSIST-207
URL:
https://issues.jboss.org/browse/JASSIST-207
Project: Javassist
Issue Type: Bug
Affects Versions: 3.18.0-GA
Reporter: Ben Romberg
Assignee: Shigeru Chiba
Priority: Critical
I wrote a unit-test for javassist, reproducing the issue:
{code}
public class ThrowExpressionCorruptsStackMapTableTest extends JvstTestRoot {
public ThrowExpressionCorruptsStackMapTableTest(String name) {
super(name);
}
public void testInsertLocalVars() throws Exception {
CtClass cc = sloader.get("test4.LocalVars");
CtMethod m1 = cc.getDeclaredMethod("run");
m1.insertBefore("throw new AssertionError((Object) \"assertion
error\");");
cc.writeFile();
Object obj = make(cc.getName());
assertEquals(10, invoke(obj, "run"));
}
}
{code}
Throws:
java.lang.VerifyError: Expecting a stack map frame in method test4.LocalVars.run()I at
offset 45
My use-case is almost the same, inserting a "throw AssertionError(...)"
expression with insertBefore. However, I get a slightly different error message:
Stack map does not match the one at exception handler 37 in method
timeofday.TimeOfDay.getSecond()I at offset 27
--
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:
http://www.atlassian.com/software/jira