Package serp.bytecode

Class Local

java.lang.Object
serp.bytecode.Local
All Implemented Interfaces:
BCEntity, InstructionPtr
Direct Known Subclasses:
LocalVariable, LocalVariableType

public abstract class Local extends Object implements BCEntity, InstructionPtr
A local variable or local variable type.
  • Field Details

    • _owner

      private LocalTable _owner
    • _target

      private InstructionPtrStrategy _target
    • _end

      private Instruction _end
    • _length

      private int _length
    • _nameIndex

      private int _nameIndex
    • _descriptorIndex

      private int _descriptorIndex
    • _index

      private int _index
  • Constructor Details

  • Method Details

    • getTable

      public LocalTable getTable()
      The owning table.
    • invalidate

      void invalidate()
    • getLocal

      public int getLocal()
      Get the local variable index of the current frame for this local.
    • setLocal

      public void setLocal(int index)
      Set the local variable index of the current frame for this local.
    • getParam

      public int getParam()
      Return the parameter that this local corresponds to, or -1 if none.
    • setParam

      public void setParam(int param)
      Set the method parameter that this local corresponds to.
    • getStartPc

      public int getStartPc()
      Return the index into the code byte array at which this local starts.
    • getStart

      public Instruction getStart()
      Return the instruction marking the beginning of this local.
    • setStartPc

      public void setStartPc(int startPc)
      Set the index into the code byte array at which this local starts.
    • setStart

      public void setStart(Instruction instruction)
      Set the Instruction marking the beginning this local. The instruction must already be a part of the method. WARNING: if this instruction is deleted, the results are undefined.
    • getEnd

      public Instruction getEnd()
      The last Instruction for which this local is in scope.
    • getLength

      public int getLength()
      Get the number of bytes for which this local has a value in the code byte array.
    • setEnd

      public void setEnd(Instruction end)
      Set the last Instruction for which this local is in scope. The instruction must already be a part of the method. WARNING: if this instruction is deleted, the results are undefined.
    • setLength

      public void setLength(int length)
      Set the number of bytes for which this local has a value in the code byte array.
    • updateTargets

      public void updateTargets()
      Description copied from interface: InstructionPtr
      Use the byte indexes read from the class file to calculate and set references to the target instruction(s) for this ptr. This method will be called after the byte code has been read in for the first time and before it is written after modification.
      Specified by:
      updateTargets in interface InstructionPtr
    • replaceTarget

      public void replaceTarget(Instruction oldTarget, Instruction newTarget)
      Description copied from interface: InstructionPtr
      Replace the given old, likely invalid, target with a new target. The new target Instruction is guaranteed to be in the same code block as this InstructionPtr.
      Specified by:
      replaceTarget in interface InstructionPtr
    • getNameIndex

      public int getNameIndex()
      Return the ConstantPool index of the UTF8Entry that describes the name of this local. Defaults to 0.
    • setNameIndex

      public void setNameIndex(int nameIndex)
      Set the ConstantPool index of the UTF8Entry that describes the name of this local.
    • getName

      public String getName()
      Return the name of this local, or null if unset.
    • setName

      public void setName(String name)
      Set the name of this inner local.
    • getTypeIndex

      public int getTypeIndex()
      Return the ConstantPool index of the UTF8Entry that describes this local. Defaults to 0.
    • setTypeIndex

      public void setTypeIndex(int index)
      Set the ConstantPool index of the UTF8Entry that describes this local.
    • getTypeName

      public String getTypeName()
      Return the full name of the local's type, or null if unset.
    • setType

      public void setType(String type)
      Set the type of this local.
    • getProject

      public Project getProject()
      Description copied from interface: BCEntity
      Return the project of the current class.
      Specified by:
      getProject in interface BCEntity
    • getPool

      public ConstantPool getPool()
      Description copied from interface: BCEntity
      Return the constant pool of the current class.
      Specified by:
      getPool in interface BCEntity
    • getClassLoader

      public ClassLoader getClassLoader()
      Description copied from interface: BCEntity
      Return the class loader to use when loading related classes.
      Specified by:
      getClassLoader in interface BCEntity
    • isValid

      public boolean isValid()
      Description copied from interface: BCEntity
      Return false if this entity has been removed from its parent; in this case the results of any operations on the entity are undefined.
      Specified by:
      isValid in interface BCEntity
    • read

      void read(DataInput in) throws IOException
      Throws:
      IOException
    • write

      void write(DataOutput out) throws IOException
      Throws:
      IOException
    • getCode

      public Code getCode()
      Description copied from interface: InstructionPtr
      Returns the Code block that owns the Instruction(s) this InstructionPtr points to.
      Specified by:
      getCode in interface InstructionPtr