Package org.apache.bcel.classfile
Class LocalVariable
java.lang.Object
org.apache.bcel.classfile.LocalVariable
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.
- See Also:
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate ConstantPool
(package private) static final LocalVariable[]
private int
private int
private int
Index in constant pool of variable name.private final int
Never changes; used to match up with LocalVariableTypeTable entries.private int
Technically, a decscriptor_index for a local variable table entry and a signatureIndex for a local variable type table entry.private int
Range in which the variable is valid.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
ConstructorsConstructorDescriptionLocalVariable
(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
(DataInput file, ConstantPool constantPool) Constructs object from file stream.LocalVariable
(LocalVariable localVariable) Initializes from another LocalVariable. -
Method Summary
Modifier and TypeMethodDescriptionvoid
Called by objects that are traversing the nodes of the tree implicitly defined by the contents of a Java class.copy()
void
dump
(DataOutputStream dataOutputStream) Dumps local variable to file stream in binary format.int
getIndex()
int
getName()
int
int
int
int
void
setConstantPool
(ConstantPool constantPool) void
setIndex
(int index) void
setLength
(int length) void
setNameIndex
(int nameIndex) void
setSignatureIndex
(int signatureIndex) void
setStartPC
(int startPc) toString()
(package private) String
toStringShared
(boolean typeTable)
-
Field Details
-
EMPTY_ARRAY
-
startPc
private int startPcRange in which the variable is valid. -
length
private int length -
nameIndex
private int nameIndexIndex in constant pool of variable name. -
signatureIndex
private int signatureIndexTechnically, a decscriptor_index for a local variable table entry and a signatureIndex for a local variable type table entry. Index of variable signature -
index
private int index -
constantPool
-
origIndex
private final int origIndexNever changes; used to match up with LocalVariableTypeTable entries.
-
-
Constructor Details
-
LocalVariable
LocalVariable(DataInput file, ConstantPool constantPool) throws IOException Constructs object from file stream.- Parameters:
file
- Input stream- Throws:
IOException
- if an I/O error occurs.
-
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
-
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.
-
-
Method Details
-
accept
Called by objects that are traversing the nodes of the tree implicitly defined by the contents of a Java class. I.e., the hierarchy of methods, fields, attributes, etc. spawns a tree of objects. -
copy
- Returns:
- deep copy of this object
-
dump
Dumps local variable to file stream in binary format.- Parameters:
dataOutputStream
- Output file stream- Throws:
IOException
- if an I/O error occurs.- See Also:
-
getConstantPool
- Returns:
- Constant pool used by this object.
-
getIndex
public int getIndex()- Returns:
- index of register where variable is stored
-
getLength
public int getLength()- Returns:
- Variable is valid within getStartPC() .. getStartPC()+getLength()
-
getName
- Returns:
- Variable name.
-
getNameIndex
public int getNameIndex()- Returns:
- Index in constant pool of variable name.
-
getOrigIndex
public int getOrigIndex()- Returns:
- index of register where variable was originally stored
-
getSignature
- Returns:
- Signature.
-
getSignatureIndex
public int getSignatureIndex()- Returns:
- Index in constant pool of variable signature.
-
getStartPC
public int getStartPC()- Returns:
- Start of range where the variable is valid
-
setConstantPool
- Parameters:
constantPool
- Constant pool to be used for this object.
-
setIndex
public void setIndex(int index) - Parameters:
index
- the index in the local variable table of this variable
-
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
-
setStartPC
public void setStartPC(int startPc) - Parameters:
startPc
- Specify range where the local variable is valid.
-
toString
-