mdahm 02/04/24 01:01:36
Modified: src/java/org/apache/bcel/generic MethodGen.java
FieldGenOrMethodGen.java
Log:
Don\'t accept ReturnaddressType as argument
Revision Changes Path
1.4 +22 -14 jakarta-bcel/src/java/org/apache/bcel/generic/MethodGen.java
Index: MethodGen.java
===================================================================
RCS file: /home/cvs/jakarta-bcel/src/java/org/apache/bcel/generic/MethodGen.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- MethodGen.java 1 Mar 2002 10:53:23 -0000 1.3
+++ MethodGen.java 24 Apr 2002 08:01:36 -0000 1.4
@@ -68,7 +68,7 @@
* use the `removeNOPs' method to get rid off them.
* The resulting method object can be obtained via the `getMethod()' method.
*
- * @version $Id: MethodGen.java,v 1.3 2002/03/01 10:53:23 mdahm Exp $
+ * @version $Id: MethodGen.java,v 1.4 2002/04/24 08:01:36 mdahm Exp $
* @author <A HREF="mailto:[email protected]">M. Dahm</A>
* @author <A HREF="http://www.vmeng.com/beard">Patrick C. Beard</A>
* @see InstructionList
@@ -265,20 +265,28 @@
public LocalVariableGen addLocalVariable(String name, Type type, int slot,
InstructionHandle start,
InstructionHandle end) {
- byte t = type.getType();
- int add = type.getSize();
-
- if(slot + add > max_locals)
- max_locals = slot + add;
-
- LocalVariableGen l = new LocalVariableGen(slot, name, type, start, end);
- int i;
+ byte t = type.getType();
- if((i = variable_vec.indexOf(l)) >= 0) // Overwrite if necessary
- variable_vec.set(i, l);
- else
- variable_vec.add(l);
- return l;
+ if(t != Constants.T_ADDRESS) {
+ int add = type.getSize();
+
+ if(slot + add > max_locals)
+ max_locals = slot + add;
+
+ LocalVariableGen l = new LocalVariableGen(slot, name, type, start, end);
+ int i;
+
+ if((i = variable_vec.indexOf(l)) >= 0) // Overwrite if necessary
+ variable_vec.set(i, l);
+ else
+ variable_vec.add(l);
+
+ return l;
+ } else {
+ throw new IllegalArgumentException("Can not use " + type +
+ " as type for local variable");
+
+ }
}
/**
1.2 +8 -2 jakarta-bcel/src/java/org/apache/bcel/generic/FieldGenOrMethodGen.java
Index: FieldGenOrMethodGen.java
===================================================================
RCS file: /home/cvs/jakarta-bcel/src/java/org/apache/bcel/generic/FieldGenOrMethodGen.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- FieldGenOrMethodGen.java 29 Oct 2001 20:00:12 -0000 1.1
+++ FieldGenOrMethodGen.java 24 Apr 2002 08:01:36 -0000 1.2
@@ -1,4 +1,5 @@
package org.apache.bcel.generic;
+import org.apache.bcel.Constants;
/* ====================================================================
* The Apache Software License, Version 1.1
@@ -61,7 +62,7 @@
* Super class for FieldGen and MethodGen objects, since they have
* some methods in common!
*
- * @version $Id: FieldGenOrMethodGen.java,v 1.1 2001/10/29 20:00:12 jvanzyl Exp $
+ * @version $Id: FieldGenOrMethodGen.java,v 1.2 2002/04/24 08:01:36 mdahm Exp $
* @author <A HREF="mailto:[email protected]">M. Dahm</A>
*/
public abstract class FieldGenOrMethodGen extends AccessFlags
@@ -74,7 +75,12 @@
protected FieldGenOrMethodGen() {}
- public void setType(Type type) { this.type = type; }
+ public void setType(Type type) {
+ if(type.getType() == Constants.T_ADDRESS)
+ throw new IllegalArgumentException("Type can not be " + type);
+
+ this.type = type;
+ }
public Type getType() { return type; }
/** @return name of method/field.
lmpx.com only provides a reader for public news (NNTP) servers. It is not
affiliated with the servers or forums shown here and is not responsible for
the content of articles, which is written by their respective authors.