Class LocalVariableGen

  • All Implemented Interfaces:
    java.lang.Cloneable, InstructionTargeter, NamedAndTyped

    public class LocalVariableGen
    extends java.lang.Object
    implements InstructionTargeter, NamedAndTyped, java.lang.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:
    LocalVariable, MethodGen
    • Field Detail

      • index

        private int index
      • name

        private java.lang.String name
      • type

        private Type type
      • origIndex

        private int origIndex
      • liveToEnd

        private boolean liveToEnd
    • Constructor Detail

      • LocalVariableGen

        public LocalVariableGen​(int index,
                                java.lang.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,
                                java.lang.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 Detail

      • clone

        public java.lang.Object clone()
        Overrides:
        clone in class java.lang.Object
      • containsTarget

        public boolean containsTarget​(InstructionHandle ih)
        Description copied from interface: InstructionTargeter
        Tests whether this targeter targets the specified instruction handle.
        Specified by:
        containsTarget in interface InstructionTargeter
        Parameters:
        ih - the instruction handle to test.
        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​(java.lang.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 java.lang.Object
      • getEnd

        public InstructionHandle getEnd()
        Gets the end instruction handle.
        Returns:
        the end instruction handle.
      • getIndex

        public int getIndex()
        Gets the index.
        Returns:
        the index.
      • getLiveToEnd

        public boolean getLiveToEnd()
        Gets whether the variable lives to the end.
        Returns:
        true if the variable lives to the end.
      • 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.
        Returns:
        the local variable.
      • getName

        public java.lang.String getName()
        Description copied from interface: NamedAndTyped
        Gets the name.
        Specified by:
        getName in interface NamedAndTyped
        Returns:
        the name.
      • getOrigIndex

        public int getOrigIndex()
        Gets the original index.
        Returns:
        the original index.
      • getStart

        public InstructionHandle getStart()
        Gets the start instruction handle.
        Returns:
        the start instruction handle.
      • hashCode

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

        public void setEnd​(InstructionHandle end)
        Sets the end instruction handle.
        Parameters:
        end - the end instruction handle.
      • setIndex

        public void setIndex​(int index)
        Sets the index.
        Parameters:
        index - the index.
      • setLiveToEnd

        public void setLiveToEnd​(boolean liveToEnd)
        Sets whether the variable lives to the end.
        Parameters:
        liveToEnd - true if the variable lives to the end.
      • setName

        public void setName​(java.lang.String name)
        Description copied from interface: NamedAndTyped
        Sets the name.
        Specified by:
        setName in interface NamedAndTyped
        Parameters:
        name - the name.
      • setStart

        public void setStart​(InstructionHandle start)
        Sets the start instruction handle.
        Parameters:
        start - the start instruction handle.
      • setType

        public void setType​(Type type)
        Description copied from interface: NamedAndTyped
        Sets the type.
        Specified by:
        setType in interface NamedAndTyped
        Parameters:
        type - the type.
      • toString

        public java.lang.String toString()
        Overrides:
        toString in class java.lang.Object