DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG· RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT <http://issues.apache.org/bugzilla/show_bug.cgi?id=33549>. ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND· INSERTED IN THE BUG DATABASE.
http://issues.apache.org/bugzilla/show_bug.cgi?id=33549 Summary: LocalVariableTypeTable seems not to be updated like LocalVariableTable Product: BCEL Version: 5.1 Platform: PC OS/Version: Windows 2000 Status: NEW Keywords: JDK1.5 Severity: major Priority: P2 Component: Main AssignedTo: bcel-dev@jakarta.apache.org ReportedBy: [EMAIL PROTECTED] Scenario: I insert into a method which has a parameterized argument some instructions and two local variables. The methods signature looks like this: public void doSomething( double d, ArrayList<Integer> list ) The method is situated in the class MyClassFile. Result: Loading the class MyClassFile which contains the new method 'doSomething' results in a ClassFormatError: LVTT entry for 'list' in class file MyClassFile does not match any LVT entry This error is not produced if the method declaration is done without generics: public void doSomething( double d, ArrayList list ) The difference is the LocalVariableTypeTable. It is not present if I do not use generics. Due to the insertion of the new instructions the start_pc and the length of the local variable have to be updated in the LocalVariableTable, which is done. But the corresponding entry in the LocalVariableTypeTable gets not updated its start_pc and length entries. LocalVariableTable ( BEFORE INSERTION ): start_pc, length, index, name 0, 26, 0, this 0, 26, 1, d 0, 26, 3, list LocalVariableTypeTable( BEFORE INSERTION ): 0, 26, 3, list LocalVariableTable ( AFTER INSERTION ): start_pc, length, index, name 44, 33, 0, this 44, 33, 1, d 44, 33, 3, list 1, 85, 4, wrapper_argumentlist 26, 60, 5, wrapper LocalVariableTypeTable( AFTER INSERTION ): 0, 26, 3, list The class works fine before the insertion. I've done bcel CVS checkout, but it did not help. The original instructions of the methods are not modified. I simply install a wrapper around the original body. I add an exception handler, therefore there is also an additional entry in the exceptiontable. I can toggle the error behaviour by using or not using the generic argument. generic -> error no generic -> no error I tried JDK 5.0 build 1.5.0-b64 and eclipse 3.1.0 build 200412162000 as a compiler. I use the JVR of the above mentioned JDK. -- Configure bugmail: http://issues.apache.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]