Class CodeExceptionGen

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

    public final class CodeExceptionGen
    extends java.lang.Object
    implements InstructionTargeter, java.lang.Cloneable
    This class represents an exception handler, that is, specifies the region where a handler is active and an instruction where the actual handling is done. pool as parameters. Opposed to the JVM specification the end of the handled region is set to be inclusive, for example all instructions between start and end are protected including the start and end instructions (handles) themselves. The end of the region is automatically mapped to be exclusive when calling getCodeException(), that is, there is no difference semantically.
    See Also:
    MethodGen, CodeException, InstructionHandle
    • Constructor Detail

      • CodeExceptionGen

        public CodeExceptionGen​(InstructionHandle startPc,
                                InstructionHandle endPc,
                                InstructionHandle handlerPc,
                                ObjectType catchType)
        Add an exception handler, that is, specify region where a handler is active and an instruction where the actual handling is done.
        Parameters:
        startPc - Start of handled region (inclusive).
        endPc - End of handled region (inclusive).
        handlerPc - Where handling is done.
        catchType - which exception is handled, null for ANY.
    • 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 handler.
      • getCatchType

        public ObjectType getCatchType()
        Gets the type of the Exception to catch, 'null' for ANY.
        Returns:
        the type of the Exception to catch, 'null' for ANY.
      • getCodeException

        public CodeException getCodeException​(ConstantPoolGen cp)
        Gets CodeException 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.
        Parameters:
        cp - constant pool.
        Returns:
        the CodeException object.
      • getEndPC

        public InstructionHandle getEndPC()
        Gets the end of handled region (inclusive).
        Returns:
        end of handled region (inclusive).
      • getHandlerPC

        public InstructionHandle getHandlerPC()
        Gets the start of handler.
        Returns:
        start of handler.
      • getStartPC

        public InstructionHandle getStartPC()
        Gets the start of handled region (inclusive).
        Returns:
        start of handled region (inclusive).
      • setCatchType

        public void setCatchType​(ObjectType catchType)
        Sets the type of the Exception to catch. Set 'null' for ANY.
        Parameters:
        catchType - the type of the Exception to catch.
      • setEndPC

        public void setEndPC​(InstructionHandle endPc)
        Sets end of handler.
        Parameters:
        endPc - End of handled region (inclusive).
      • setHandlerPC

        public void setHandlerPC​(InstructionHandle handlerPc)
        Sets handler code.
        Parameters:
        handlerPc - Start of handler.
      • setStartPC

        public void setStartPC​(InstructionHandle startPc)
        Sets start of handler.
        Parameters:
        startPc - Start of handled region (inclusive).
      • toString

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