Package org.apache.bcel.classfile
Class LocalVariable
- java.lang.Object
-
- org.apache.bcel.classfile.LocalVariable
-
public final class LocalVariable extends java.lang.Object implements java.lang.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 Modifier and Type Field Description private ConstantPoolconstantPool(package private) static LocalVariable[]EMPTY_ARRAYprivate intindexprivate intlengthprivate intnameIndexIndex in constant pool of variable name.private intorigIndexNever changes; used to match up with LocalVariableTypeTable entries.private intsignatureIndexTechnically, a decscriptor_index for a local variable table entry and a signatureIndex for a local variable type table entry.private intstartPcRange 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
Constructors Constructor Description LocalVariable(int startPc, int length, int nameIndex, int signatureIndex, int index, ConstantPool constantPool)Constructs a LocalVariable.LocalVariable(int startPc, int length, int nameIndex, int signatureIndex, int index, ConstantPool constantPool, int origIndex)Constructs a LocalVariable.LocalVariable(java.io.DataInput file, ConstantPool constantPool)Constructs object from file stream.LocalVariable(LocalVariable localVariable)Initializes from another LocalVariable.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidaccept(Visitor v)Called by objects that are traversing the nodes of the tree implicitly defined by the contents of a Java class.LocalVariablecopy()Creates a deep copy of this object.voiddump(java.io.DataOutputStream dataOutputStream)Dumps local variable to file stream in binary format.ConstantPoolgetConstantPool()Gets the constant pool used by this object.intgetIndex()Gets the index of register where variable is stored.intgetLength()Gets the length of validity.java.lang.StringgetName()Gets the variable name.intgetNameIndex()Gets the index in constant pool of variable name.intgetOrigIndex()Gets the index of register where variable was originally stored.java.lang.StringgetSignature()Gets the signature.intgetSignatureIndex()Gets the index in constant pool of variable signature.intgetStartPC()Gets the start of range where the variable is valid.voidsetConstantPool(ConstantPool constantPool)Sets the constant pool to be used for this object.voidsetIndex(int index)Sets the index in the local variable table of this variable.voidsetLength(int length)Sets the length of this local variable.voidsetNameIndex(int nameIndex)Sets the index into the constant pool for the name of this variable.voidsetSignatureIndex(int signatureIndex)Sets the index into the constant pool for the signature of this variable.voidsetStartPC(int startPc)Sets the range where the local variable is valid.java.lang.StringtoString()Gets the string representation.(package private) java.lang.StringtoStringShared(boolean typeTable)
-
-
-
Field Detail
-
EMPTY_ARRAY
static final LocalVariable[] EMPTY_ARRAY
-
startPc
private int startPc
Range in which the variable is valid.
-
length
private int length
-
nameIndex
private int nameIndex
Index in constant pool of variable name.
-
signatureIndex
private int signatureIndex
Technically, 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
private ConstantPool constantPool
-
origIndex
private final int origIndex
Never changes; used to match up with LocalVariableTypeTable entries.
-
-
Constructor Detail
-
LocalVariable
LocalVariable(java.io.DataInput file, ConstantPool constantPool) throws java.io.IOExceptionConstructs object from file stream.- Parameters:
file- Input stream.- Throws:
java.io.IOException- if an I/O error occurs.
-
LocalVariable
public LocalVariable(int startPc, int length, int nameIndex, int signatureIndex, int index, ConstantPool constantPool)Constructs a LocalVariable.- Parameters:
startPc- Range in which the variable is valid.length- length of validity.nameIndex- Index in constant pool of variable name.signatureIndex- Index of variable's signature.index- Variable is 'index'th local variable on the method's frame.constantPool- Array of constants.
-
LocalVariable
public LocalVariable(int startPc, int length, int nameIndex, int signatureIndex, int index, ConstantPool constantPool, int origIndex)Constructs a LocalVariable.- Parameters:
startPc- Range in which the variable is valid.length- length of validity.nameIndex- Index in constant pool of variable name.signatureIndex- Index of variable's signature.index- Variable is 'index'th local variable on the method's frame.constantPool- Array of constants.origIndex- Variable is 'index'th local variable on the method's frame prior to any changes.
-
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.
-
-
Method Detail
-
accept
public void accept(Visitor v)
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
public LocalVariable copy()
Creates a deep copy of this object.- Returns:
- deep copy of this object.
-
dump
public void dump(java.io.DataOutputStream dataOutputStream) throws java.io.IOExceptionDumps local variable to file stream in binary format.- Parameters:
dataOutputStream- Output file stream.- Throws:
java.io.IOException- if an I/O error occurs.- See Also:
FilterOutputStream.out
-
getConstantPool
public ConstantPool getConstantPool()
Gets the constant pool used by this object.- Returns:
- Constant pool used by this object.
-
getIndex
public int getIndex()
Gets the index of register where variable is stored.- Returns:
- index of register where variable is stored.
-
getLength
public int getLength()
Gets the length of validity.- Returns:
- Variable is valid within getStartPC() .. getStartPC()+getLength().
-
getName
public java.lang.String getName()
Gets the variable name.- Returns:
- Variable name.
-
getNameIndex
public int getNameIndex()
Gets the index in constant pool of variable name.- Returns:
- Index in constant pool of variable name.
-
getOrigIndex
public int getOrigIndex()
Gets the index of register where variable was originally stored.- Returns:
- index of register where variable was originally stored.
-
getSignature
public java.lang.String getSignature()
Gets the signature.- Returns:
- Signature.
-
getSignatureIndex
public int getSignatureIndex()
Gets the index in constant pool of variable signature.- Returns:
- Index in constant pool of variable signature.
-
getStartPC
public int getStartPC()
Gets the start of range where the variable is valid.- Returns:
- Start of range where the variable is valid.
-
setConstantPool
public void setConstantPool(ConstantPool constantPool)
Sets the constant pool to be used for this object.- Parameters:
constantPool- Constant pool to be used for this object.
-
setIndex
public void setIndex(int index)
Sets the index in the local variable table of this variable.- Parameters:
index- the index in the local variable table of this variable.
-
setLength
public void setLength(int length)
Sets the length of this local variable.- Parameters:
length- the length of this local variable.
-
setNameIndex
public void setNameIndex(int nameIndex)
Sets the index into the constant pool for the name of this variable.- Parameters:
nameIndex- the index into the constant pool for the name of this variable.
-
setSignatureIndex
public void setSignatureIndex(int signatureIndex)
Sets the index into the constant pool for the signature of this variable.- Parameters:
signatureIndex- the index into the constant pool for the signature of this variable.
-
setStartPC
public void setStartPC(int startPc)
Sets the range where the local variable is valid.- Parameters:
startPc- Specify range where the local variable is valid.
-
toString
public java.lang.String toString()
Gets the string representation.- Overrides:
toStringin classjava.lang.Object- Returns:
- string representation.
-
toStringShared
java.lang.String toStringShared(boolean typeTable)
-
-