Class LocalVariableInstruction

java.lang.Object
org.apache.bcel.generic.Instruction
org.apache.bcel.generic.LocalVariableInstruction
All Implemented Interfaces:
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.
  • Field Details

    • n

      @Deprecated protected int n
      Deprecated.
      (since 6.0) will be made private; do not access directly, use getter/setter
  • Constructor Details

    • LocalVariableInstruction

      protected LocalVariableInstruction(short opcode, short cTag, int n)
      Parameters:
      opcode - Instruction opcode
      cTag - Instruction number for compact version, ALOAD_0, e.g.
      n - local variable index (unsigned short)
  • Method Details

    • dump

      public void dump(DataOutputStream out) throws IOException
      Dump instruction as byte code to stream out.
      Overrides:
      dump in class Instruction
      Parameters:
      out - Output stream
      Throws:
      IOException
    • toString

      public String toString(boolean verbose)
      Long output format: <name of opcode> "["<opcode number>"]" "("<length of instruction>")" "<"< local variable index>">"
      Overrides:
      toString in class Instruction
      Parameters:
      verbose - long/short format switch
      Returns:
      mnemonic for instruction
    • initFromFile

      protected void initFromFile(ByteSequence bytes, boolean wide) throws IOException
      Read needed data (e.g. index) from file.
       (ILOAD <= tag <= ALOAD_3) || (ISTORE <= tag <= ASTORE_3)
       
      Overrides:
      initFromFile in class Instruction
      Parameters:
      bytes - byte sequence to read from
      wide - "wide" instruction flag
      Throws:
      IOException - may be thrown if the implementation needs to read data from the file
    • getIndex

      public final int getIndex()
      Specified by:
      getIndex in interface IndexedInstruction
      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:
      setIndex in interface IndexedInstruction
      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:
      getType in interface TypedInstruction
      Returns:
      type associated with the instruction