Package org.apache.bcel.generic
Class LocalVariableInstruction
- java.lang.Object
-
- org.apache.bcel.generic.Instruction
-
- org.apache.bcel.generic.LocalVariableInstruction
-
- All Implemented Interfaces:
java.lang.Cloneable,IndexedInstruction,TypedInstruction
- Direct Known Subclasses:
IINC,LoadInstruction,StoreInstruction
public abstract class LocalVariableInstruction extends Instruction implements TypedInstruction, IndexedInstruction
Abstract super class for instructions dealing with local variables.
-
-
Constructor Summary
Constructors Modifier Constructor Description (package private)LocalVariableInstruction()Empty constructor needed for Instruction.readInstruction.(package private)LocalVariableInstruction(short canon_tag, short c_tag)Empty constructor needed for Instruction.readInstruction.protectedLocalVariableInstruction(short opcode, short c_tag, int n)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voiddump(java.io.DataOutputStream out)Dump instruction as byte code to stream out.shortgetCanonicalTag()intgetIndex()TypegetType(ConstantPoolGen cp)Returns the type associated with the instruction - in case of ALOAD or ASTORE Type.OBJECT is returned.protected voidinitFromFile(ByteSequence bytes, boolean wide)Read needed data (e.g.voidsetIndex(int n)Set the local variable index.(package private) voidsetIndexOnly(int n)Sets the index of the referenced variable (n) onlyjava.lang.StringtoString(boolean verbose)Long output format: <name of opcode> "["<opcode number>"]" "("<length of instruction>")" "<"< local variable index>">"private booleanwide()-
Methods inherited from class org.apache.bcel.generic.Instruction
accept, consumeStack, copy, dispose, equals, getComparator, getLength, getName, getOpcode, hashCode, isValidByte, isValidShort, produceStack, readInstruction, setComparator, setLength, setOpcode, toString, toString
-
-
-
-
Constructor Detail
-
LocalVariableInstruction
LocalVariableInstruction(short canon_tag, short c_tag)Empty constructor needed for Instruction.readInstruction. Not to be used otherwise. tag and length are defined in readInstruction and initFromFile, respectively.
-
LocalVariableInstruction
LocalVariableInstruction()
Empty constructor needed for Instruction.readInstruction. Also used by IINC()!
-
LocalVariableInstruction
protected LocalVariableInstruction(short opcode, short c_tag, int n)- Parameters:
opcode- Instruction opcodec_tag- Instruction number for compact version, ALOAD_0, e.g.n- local variable index (unsigned short)
-
-
Method Detail
-
wide
private boolean wide()
-
dump
public void dump(java.io.DataOutputStream out) throws java.io.IOExceptionDump instruction as byte code to stream out.- Overrides:
dumpin classInstruction- Parameters:
out- Output stream- Throws:
java.io.IOException
-
toString
public java.lang.String toString(boolean verbose)
Long output format: <name of opcode> "["<opcode number>"]" "("<length of instruction>")" "<"< local variable index>">"- Overrides:
toStringin classInstruction- Parameters:
verbose- long/short format switch- Returns:
- mnemonic for instruction
-
initFromFile
protected void initFromFile(ByteSequence bytes, boolean wide) throws java.io.IOException
Read needed data (e.g. index) from file.(ILOAD <= tag <= ALOAD_3) || (ISTORE <= tag <= ASTORE_3)
- Overrides:
initFromFilein classInstruction- Parameters:
bytes- byte sequence to read fromwide- "wide" instruction flag- Throws:
java.io.IOException- may be thrown if the implementation needs to read data from the file
-
getIndex
public final int getIndex()
- Specified by:
getIndexin interfaceIndexedInstruction- Returns:
- local variable index (n) referred by this instruction.
-
setIndex
public void setIndex(int n)
Set the local variable index. also updates opcode and length TODO Why?- Specified by:
setIndexin interfaceIndexedInstruction- See Also:
setIndexOnly(int)
-
getCanonicalTag
public short getCanonicalTag()
- Returns:
- canonical tag for instruction, e.g., ALOAD for ALOAD_0
-
getType
public Type getType(ConstantPoolGen cp)
Returns the type associated with the instruction - in case of ALOAD or ASTORE Type.OBJECT is returned. This is just a bit incorrect, because ALOAD and ASTORE may work on every ReferenceType (including Type.NULL) and ASTORE may even work on a ReturnaddressType .- Specified by:
getTypein interfaceTypedInstruction- Returns:
- type associated with the instruction
-
setIndexOnly
final void setIndexOnly(int n)
Sets the index of the referenced variable (n) only- Since:
- 6.0
- See Also:
setIndex(int)
-
-