Package org.apache.bcel.classfile
Class LocalVariable
- java.lang.Object
-
- org.apache.bcel.classfile.LocalVariable
-
public final class LocalVariable extends Object implements Cloneable, Node, Constants
This class represents a local variable within a method. It contains its scope, name, signature and index on the method's frame. It is used both to represent an element of the LocalVariableTable as well as an element of the LocalVariableTypeTable. The nomenclature used here may be a bit confusing; while the two items have the same layout in a class file, a LocalVariableTable attribute contains a descriptor_index, not a signatureIndex. The LocalVariableTypeTable attribute does have a signatureIndex.
-
-
Field Summary
-
Fields inherited from interface org.apache.bcel.Constants
AALOAD, AASTORE, ACC_ABSTRACT, ACC_ANNOTATION, ACC_BRIDGE, ACC_ENUM, ACC_FINAL, ACC_INTERFACE, ACC_NATIVE, ACC_PRIVATE, ACC_PROTECTED, ACC_PUBLIC, ACC_STATIC, ACC_STRICT, ACC_SUPER, ACC_SYNCHRONIZED, ACC_SYNTHETIC, ACC_TRANSIENT, ACC_VARARGS, ACC_VOLATILE, ACCESS_NAMES, ACONST_NULL, ALOAD, ALOAD_0, ALOAD_1, ALOAD_2, ALOAD_3, ANEWARRAY, ANEWARRAY_QUICK, ARETURN, ARRAYLENGTH, ASTORE, ASTORE_0, ASTORE_1, ASTORE_2, ASTORE_3, ATHROW, ATTR_ANNOTATION_DEFAULT, ATTR_CODE, ATTR_CONSTANT_VALUE, ATTR_DEPRECATED, ATTR_EXCEPTIONS, ATTR_INNER_CLASSES, ATTR_LINE_NUMBER_TABLE, ATTR_LOCAL_VARIABLE_TABLE, ATTR_PMG, ATTR_RUNTIMEINVISIBLE_ANNOTATIONS, ATTR_RUNTIMEINVISIBLE_PARAMETER_ANNOTATIONS, ATTR_RUNTIMEVISIBLE_ANNOTATIONS, ATTR_RUNTIMEVISIBLE_PARAMETER_ANNOTATIONS, ATTR_SIGNATURE, ATTR_SOURCE_FILE, ATTR_STACK_MAP, ATTR_SYNTHETIC, ATTR_UNKNOWN, ATTRIBUTE_NAMES, BALOAD, BASTORE, BIPUSH, BREAKPOINT, CALOAD, CASTORE, CHECKCAST, CHECKCAST_QUICK, CLASS_TYPE_NAMES, CONSTANT_Class, CONSTANT_Double, CONSTANT_Fieldref, CONSTANT_Float, CONSTANT_Integer, CONSTANT_InterfaceMethodref, CONSTANT_Long, CONSTANT_Methodref, CONSTANT_NameAndType, CONSTANT_NAMES, CONSTANT_String, CONSTANT_Utf8, CONSTRUCTOR_NAME, CONSUME_STACK, D2F, D2I, D2L, DADD, DALOAD, DASTORE, DCMPG, DCMPL, DCONST_0, DCONST_1, DDIV, DLOAD, DLOAD_0, DLOAD_1, DLOAD_2, DLOAD_3, DMUL, DNEG, DREM, DRETURN, DSTORE, DSTORE_0, DSTORE_1, DSTORE_2, DSTORE_3, DSUB, DUP, DUP_X1, DUP_X2, DUP2, DUP2_X1, DUP2_X2, F2D, F2I, F2L, FADD, FALOAD, FASTORE, FCMPG, FCMPL, FCONST_0, FCONST_1, FCONST_2, FDIV, FLOAD, FLOAD_0, FLOAD_1, FLOAD_2, FLOAD_3, FMUL, FNEG, FREM, FRETURN, FSTORE, FSTORE_0, FSTORE_1, FSTORE_2, FSTORE_3, FSUB, GETFIELD, GETFIELD_QUICK, GETFIELD_QUICK_W, GETFIELD2_QUICK, GETSTATIC, GETSTATIC_QUICK, GETSTATIC2_QUICK, GOTO, GOTO_W, I2B, I2C, I2D, I2F, I2L, I2S, IADD, IALOAD, IAND, IASTORE, ICONST_0, ICONST_1, ICONST_2, ICONST_3, ICONST_4, ICONST_5, ICONST_M1, IDIV, IF_ACMPEQ, IF_ACMPNE, IF_ICMPEQ, IF_ICMPGE, IF_ICMPGT, IF_ICMPLE, IF_ICMPLT, IF_ICMPNE, IFEQ, IFGE, IFGT, IFLE, IFLT, IFNE, IFNONNULL, IFNULL, IINC, ILLEGAL_OPCODE, ILLEGAL_TYPE, ILOAD, ILOAD_0, ILOAD_1, ILOAD_2, ILOAD_3, IMPDEP1, IMPDEP2, IMUL, INEG, INSTANCEOF, INSTANCEOF_QUICK, INT2BYTE, INT2CHAR, INT2SHORT, INTERFACES_IMPLEMENTED_BY_ARRAYS, INVOKEDYNAMIC, INVOKEINTERFACE, INVOKEINTERFACE_QUICK, INVOKENONVIRTUAL, INVOKENONVIRTUAL_QUICK, INVOKESPECIAL, INVOKESTATIC, INVOKESTATIC_QUICK, INVOKESUPER_QUICK, INVOKEVIRTUAL, INVOKEVIRTUAL_QUICK, INVOKEVIRTUAL_QUICK_W, INVOKEVIRTUALOBJECT_QUICK, IOR, IREM, IRETURN, ISHL, ISHR, ISTORE, ISTORE_0, ISTORE_1, ISTORE_2, ISTORE_3, ISUB, ITEM_Bogus, ITEM_Double, ITEM_Float, ITEM_InitObject, ITEM_Integer, ITEM_Long, ITEM_NAMES, ITEM_NewObject, ITEM_Null, ITEM_Object, IUSHR, IXOR, JSR, JSR_W, KNOWN_ATTRIBUTES, L2D, L2F, L2I, LADD, LALOAD, LAND, LASTORE, LCMP, LCONST_0, LCONST_1, LDC, LDC_QUICK, LDC_W, LDC_W_QUICK, LDC2_W, LDC2_W_QUICK, LDIV, LLOAD, LLOAD_0, LLOAD_1, LLOAD_2, LLOAD_3, LMUL, LNEG, LOOKUPSWITCH, LOR, LREM, LRETURN, LSHL, LSHR, LSTORE, LSTORE_0, LSTORE_1, LSTORE_2, LSTORE_3, LSUB, LUSHR, LXOR, MAJOR, MAJOR_1_1, MAJOR_1_2, MAJOR_1_3, MAJOR_1_4, MAJOR_1_5, MAX_ACC_FLAG, MAX_BYTE, MAX_CODE_SIZE, MAX_CP_ENTRIES, MAX_SHORT, MINOR, MINOR_1_1, MINOR_1_2, MINOR_1_3, MINOR_1_4, MINOR_1_5, MONITORENTER, MONITOREXIT, MULTIANEWARRAY, MULTIANEWARRAY_QUICK, NEW, NEW_QUICK, NEWARRAY, NO_OF_OPERANDS, NOP, OPCODE_NAMES, POP, POP2, PRODUCE_STACK, PUSH, PUTFIELD, PUTFIELD_QUICK, PUTFIELD_QUICK_W, PUTFIELD2_QUICK, PUTSTATIC, PUTSTATIC_QUICK, PUTSTATIC2_QUICK, RESERVED, RET, RETURN, SALOAD, SASTORE, SHORT_TYPE_NAMES, SIPUSH, STATIC_INITIALIZER_NAME, SWAP, SWITCH, T_ADDRESS, T_ARRAY, T_BOOLEAN, T_BYTE, T_CHAR, T_DOUBLE, T_FLOAT, T_INT, T_LONG, T_OBJECT, T_REFERENCE, T_SHORT, T_UNKNOWN, T_VOID, TABLESWITCH, TYPE_NAMES, TYPE_OF_OPERANDS, UNDEFINED, UNPREDICTABLE, WIDE
-
-
Constructor Summary
Constructors Constructor Description LocalVariable(int startPc, int length, int nameIndex, int signatureIndex, int index, ConstantPool constantPool)
LocalVariable(int startPc, int length, int nameIndex, int signatureIndex, int index, ConstantPool constantPool, int origIndex)
LocalVariable(LocalVariable localVariable)
Initializes from another LocalVariable.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
accept(Visitor v)
Called by objects that are traversing the nodes of the tree implicitely defined by the contents of a Java class.LocalVariable
copy()
void
dump(DataOutputStream dataOutputStream)
Dumps local variable to file stream in binary format.ConstantPool
getConstantPool()
int
getIndex()
int
getLength()
String
getName()
int
getNameIndex()
int
getOrigIndex()
String
getSignature()
int
getSignatureIndex()
int
getStartPC()
void
setConstantPool(ConstantPool constantPool)
void
setIndex(int index)
void
setLength(int length)
void
setNameIndex(int nameIndex)
void
setSignatureIndex(int signatureIndex)
void
setStartPC(int startPc)
String
toString()
-
-
-
Constructor Detail
-
LocalVariable
public LocalVariable(LocalVariable localVariable)
Initializes from another LocalVariable. Note that both objects use the same references (shallow copy). Use copy() for a physical copy.- Parameters:
localVariable
- Another LocalVariable.
-
LocalVariable
public LocalVariable(int startPc, int length, int nameIndex, int signatureIndex, int index, ConstantPool constantPool)
- Parameters:
startPc
- Range in which the variablelength
- ... is validnameIndex
- Index in constant pool of variable namesignatureIndex
- Index of variable's signatureindex
- Variable is `index'th local variable on the method's frameconstantPool
- Array of constants
-
LocalVariable
public LocalVariable(int startPc, int length, int nameIndex, int signatureIndex, int index, ConstantPool constantPool, int origIndex)
- Parameters:
startPc
- Range in which the variablelength
- ... is validnameIndex
- Index in constant pool of variable namesignatureIndex
- Index of variable's signatureindex
- Variable is `index'th local variable on the method's frameconstantPool
- Array of constantsorigIndex
- Variable is `index'th local variable on the method's frame prior to any changes
-
-
Method Detail
-
accept
public void accept(Visitor v)
Called by objects that are traversing the nodes of the tree implicitely defined by the contents of a Java class. I.e., the hierarchy of methods, fields, attributes, etc. spawns a tree of objects.
-
dump
public void dump(DataOutputStream dataOutputStream) throws IOException
Dumps local variable to file stream in binary format.- Parameters:
dataOutputStream
- Output file stream- Throws:
IOException
- if an I/O error occurs.- See Also:
FilterOutputStream.out
-
getConstantPool
public ConstantPool getConstantPool()
- Returns:
- Constant pool used by this object.
-
getLength
public int getLength()
- Returns:
- Variable is valid within getStartPC() .. getStartPC()+getLength()
-
getName
public String getName()
- Returns:
- Variable name.
-
getNameIndex
public int getNameIndex()
- Returns:
- Index in constant pool of variable name.
-
getSignature
public String getSignature()
- Returns:
- Signature.
-
getSignatureIndex
public int getSignatureIndex()
- Returns:
- Index in constant pool of variable signature.
-
getIndex
public int getIndex()
- Returns:
- index of register where variable is stored
-
getOrigIndex
public int getOrigIndex()
- Returns:
- index of register where variable was originally stored
-
getStartPC
public int getStartPC()
- Returns:
- Start of range where the variable is valid
-
setConstantPool
public void setConstantPool(ConstantPool constantPool)
- Parameters:
constantPool
- Constant pool to be used for this object.
-
setLength
public void setLength(int length)
- Parameters:
length
- the length of this local variable
-
setNameIndex
public void setNameIndex(int nameIndex)
- Parameters:
nameIndex
- the index into the constant pool for the name of this variable
-
setSignatureIndex
public void setSignatureIndex(int signatureIndex)
- Parameters:
signatureIndex
- the index into the constant pool for the signature of this variable
-
setIndex
public void setIndex(int index)
- Parameters:
index
- the index in the local variable table of this variable
-
setStartPC
public void setStartPC(int startPc)
- Parameters:
startPc
- Specify range where the local variable is valid.
-
toString
public String toString()
-
copy
public LocalVariable copy()
- Returns:
- deep copy of this object
-
-