You are viewing a plain text version of this content. The canonical link for it is here.
Posted to bcel-dev@jakarta.apache.org by tc...@apache.org on 2007/04/01 16:58:35 UTC
svn commit: r524610 -
/jakarta/bcel/trunk/src/main/java/org/apache/bcel/generic/MethodGen.java
Author: tcurdt
Date: Sun Apr 1 07:58:34 2007
New Revision: 524610
URL: http://svn.apache.org/viewvc?view=rev&rev=524610
Log:
http://issues.apache.org/bugzilla/show_bug.cgi?id=39695
Modified:
jakarta/bcel/trunk/src/main/java/org/apache/bcel/generic/MethodGen.java
Modified: jakarta/bcel/trunk/src/main/java/org/apache/bcel/generic/MethodGen.java
URL: http://svn.apache.org/viewvc/jakarta/bcel/trunk/src/main/java/org/apache/bcel/generic/MethodGen.java?view=diff&rev=524610&r1=524609&r2=524610
==============================================================================
--- jakarta/bcel/trunk/src/main/java/org/apache/bcel/generic/MethodGen.java (original)
+++ jakarta/bcel/trunk/src/main/java/org/apache/bcel/generic/MethodGen.java Sun Apr 1 07:58:34 2007
@@ -32,6 +32,7 @@
import org.apache.bcel.classfile.LineNumberTable;
import org.apache.bcel.classfile.LocalVariable;
import org.apache.bcel.classfile.LocalVariableTable;
+import org.apache.bcel.classfile.LocalVariableTypeTable;
import org.apache.bcel.classfile.Method;
import org.apache.bcel.classfile.ParameterAnnotationEntry;
import org.apache.bcel.classfile.ParameterAnnotations;
@@ -237,6 +238,23 @@
addLocalVariable(l.getName(), Type.getType(l.getSignature()), l
.getIndex(), start, end);
}
+ } else if (a instanceof LocalVariableTypeTable) {
+ LocalVariable[] lv = ((LocalVariableTypeTable) a).getLocalVariableTypeTable();
+ removeLocalVariables();
+ for (int k = 0; k < lv.length; k++) {
+ LocalVariable l = lv[k];
+ InstructionHandle start = il.findHandle(l.getStartPC());
+ InstructionHandle end = il.findHandle(l.getStartPC() + l.getLength());
+ // Repair malformed handles
+ if (null == start) {
+ start = il.getStart();
+ }
+ if (null == end) {
+ end = il.getEnd();
+ }
+ addLocalVariable(l.getName(), Type.getType(l.getSignature()), l
+ .getIndex(), start, end);
+ }
} else {
addCodeAttribute(a);
}
@@ -1062,6 +1080,13 @@
signature = Utility.methodSignatureToString(signature, name, access, true,
getLocalVariableTable(cp));
StringBuffer buf = new StringBuffer(signature);
+ for (int i = 0; i < getAttributes().length; i++) {
+ Attribute a = getAttributes()[i];
+ if (!((a instanceof Code) || (a instanceof ExceptionTable))) {
+ buf.append(" [").append(a.toString()).append("]");
+ }
+ }
+
if (throws_vec.size() > 0) {
for (Iterator e = throws_vec.iterator(); e.hasNext();) {
buf.append("\n\t\tthrows ").append(e.next());
---------------------------------------------------------------------
To unsubscribe, e-mail: bcel-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: bcel-dev-help@jakarta.apache.org