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 signature_index. The
LocalVariableTypeTable attribute does have a signature_index.
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate ConstantPool
private int
private int
private int
private int
private int
private int
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 start_pc, int length, int name_index, int signature_index, int index, ConstantPool constant_pool) LocalVariable
(int start_pc, int length, int name_index, int signature_index, int index, ConstantPool constant_pool, int orig_index) LocalVariable
(DataInput file, ConstantPool constant_pool) 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 implicitely 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 constant_pool) void
setIndex
(int index) void
setLength
(int length) void
setNameIndex
(int name_index) void
setSignatureIndex
(int signature_index) void
setStartPC
(int start_pc) toString()
(package private) String
toStringShared
(boolean typeTable)
-
Field Details
-
start_pc
private int start_pc -
length
private int length -
name_index
private int name_index -
signature_index
private int signature_index -
index
private int index -
constant_pool
-
orig_index
private int orig_index
-
-
Constructor Details
-
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
LocalVariable(DataInput file, ConstantPool constant_pool) throws IOException Constructs object from file stream.- Parameters:
file
- Input stream- Throws:
IOException
-
LocalVariable
public LocalVariable(int start_pc, int length, int name_index, int signature_index, int index, ConstantPool constant_pool) - Parameters:
start_pc
- Range in which the variablelength
- ... is validname_index
- Index in constant pool of variable namesignature_index
- Index of variable's signatureindex
- Variable is `index'th local variable on the method's frameconstant_pool
- Array of constants
-
LocalVariable
public LocalVariable(int start_pc, int length, int name_index, int signature_index, int index, ConstantPool constant_pool, int orig_index) - Parameters:
start_pc
- Range in which the variablelength
- ... is validname_index
- Index in constant pool of variable namesignature_index
- Index of variable's signatureindex
- Variable is `index'th local variable on the method's frameconstant_pool
- Array of constantsorig_index
- Variable is `index'th local variable on the method's frame prior to any changes
-
-
Method Details
-
accept
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
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.
-
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.
-
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
- Parameters:
constant_pool
- 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 name_index) - Parameters:
name_index
- the index into the constant pool for the name of this variable
-
setSignatureIndex
public void setSignatureIndex(int signature_index) - Parameters:
signature_index
- 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 start_pc) - Parameters:
start_pc
- Specify range where the local variable is valid.
-
toString
-
copy
- Returns:
- deep copy of this object
-