Class LocalVariableGen

java.lang.Object
org.apache.bcel.generic.LocalVariableGen
All Implemented Interfaces:
Cloneable, InstructionTargeter, NamedAndTyped

public class LocalVariableGen extends Object implements InstructionTargeter, NamedAndTyped, Cloneable
Represents a local variable within a method. It contains its scope, name and type. The generated LocalVariable object can be obtained with getLocalVariable which needs the instruction list and the constant pool as parameters.
See Also:
  • Field Details

    • index

      private int index
    • name

      private String name
    • type

      private Type type
    • start

      private InstructionHandle start
    • end

      private InstructionHandle end
    • origIndex

      private int origIndex
    • liveToEnd

      private boolean liveToEnd
  • Constructor Details

    • LocalVariableGen

      public LocalVariableGen(int index, String name, Type type, InstructionHandle start, InstructionHandle end)
      Generate a local variable that with index 'index'. Note that double and long variables need two indexs. Index indices have to be provided by the user.
      Parameters:
      index - index of local variable
      name - its name
      type - its type
      start - from where the instruction is valid (null means from the start)
      end - until where the instruction is valid (null means to the end)
    • LocalVariableGen

      public LocalVariableGen(int index, String name, Type type, InstructionHandle start, InstructionHandle end, int origIndex)
      Generates a local variable that with index 'index'. Note that double and long variables need two indexs. Index indices have to be provided by the user.
      Parameters:
      index - index of local variable
      name - its name
      type - its type
      start - from where the instruction is valid (null means from the start)
      end - until where the instruction is valid (null means to the end)
      origIndex - index of local variable prior to any changes to index
  • Method Details

    • clone

      public Object clone()
      Overrides:
      clone in class Object
    • containsTarget

      public boolean containsTarget(InstructionHandle ih)
      Description copied from interface: InstructionTargeter
      Checks whether this targeter targets the specified instruction handle.
      Specified by:
      containsTarget in interface InstructionTargeter
      Returns:
      true, if ih is target of this variable
    • dispose

      void dispose()
      Clear the references from and to this variable when it's removed.
    • equals

      public boolean equals(Object o)
      We consider to local variables to be equal, if the use the same index and are valid in the same range.
      Overrides:
      equals in class Object
    • getEnd

      public InstructionHandle getEnd()
    • getIndex

      public int getIndex()
    • getLiveToEnd

      public boolean getLiveToEnd()
    • getLocalVariable

      public LocalVariable getLocalVariable(ConstantPoolGen cp)
      Gets LocalVariable object. This relies on that the instruction list has already been dumped to byte code or that the 'setPositions' methods has been called for the instruction list. Note that due to the conversion from byte code offset to InstructionHandle, it is impossible to tell the difference between a live range that ends BEFORE the last insturction of the method or a live range that ends AFTER the last instruction of the method. Hence the liveToEnd flag to differentiate between these two cases.
      Parameters:
      cp - constant pool
    • getName

      public String getName()
      Specified by:
      getName in interface NamedAndTyped
    • getOrigIndex

      public int getOrigIndex()
    • getStart

      public InstructionHandle getStart()
    • getType

      public Type getType()
      Specified by:
      getType in interface NamedAndTyped
    • hashCode

      public int hashCode()
      Overrides:
      hashCode in class Object
    • setEnd

      public void setEnd(InstructionHandle end)
    • setIndex

      public void setIndex(int index)
    • setLiveToEnd

      public void setLiveToEnd(boolean liveToEnd)
    • setName

      public void setName(String name)
      Specified by:
      setName in interface NamedAndTyped
    • setStart

      public void setStart(InstructionHandle start)
    • setType

      public void setType(Type type)
      Specified by:
      setType in interface NamedAndTyped
    • toString

      public String toString()
      Overrides:
      toString in class Object
    • updateTarget

      public void updateTarget(InstructionHandle oldIh, InstructionHandle newIh)
      Description copied from interface: InstructionTargeter
      Replaces the target of this targeter from this old handle to the new handle.
      Specified by:
      updateTarget in interface InstructionTargeter
      Parameters:
      oldIh - old target, either start or end
      newIh - new target