Class SimpleInstruction


  • public class SimpleInstruction
    extends IRInstruction
    A single-operand instruction identified by its SimpleOp: arraylength, monitor ops, throw, goto, or catch.
    • Method Detail

      • createArrayLength

        public static SimpleInstruction createArrayLength​(SSAValue result,
                                                          Value array)
        Creates an arraylength read.
        Parameters:
        result - the SSA value receiving the length
        array - the array reference
        Returns:
        the instruction
      • createMonitorEnter

        public static SimpleInstruction createMonitorEnter​(Value objectRef)
        Creates a monitorenter.
        Parameters:
        objectRef - the object whose monitor is entered
        Returns:
        the instruction
      • createMonitorExit

        public static SimpleInstruction createMonitorExit​(Value objectRef)
        Creates a monitorexit.
        Parameters:
        objectRef - the object whose monitor is released
        Returns:
        the instruction
      • createThrow

        public static SimpleInstruction createThrow​(Value exception)
        Creates an athrow.
        Parameters:
        exception - the exception to throw
        Returns:
        the instruction
      • createGoto

        public static SimpleInstruction createGoto​(IRBlock target)
        Creates an unconditional jump.
        Parameters:
        target - the block to jump to
        Returns:
        the instruction
      • createCatch

        public static SimpleInstruction createCatch​(SSAValue result)
        Creates the pseudo-instruction that captures the caught exception the JVM leaves on the stack at handler entry.
        Parameters:
        result - value the caught exception is bound to
        Returns:
        the instruction
      • getOp

        public SimpleOp getOp()
        Returns:
        the op
      • getOperand

        public Value getOperand()
        Returns:
        the operand
      • getTarget

        public IRBlock getTarget()
        Returns:
        the target
      • setTarget

        public void setTarget​(IRBlock target)
        Parameters:
        target - the jump target block
      • replaceOperand

        public void replaceOperand​(Value oldValue,
                                   Value newValue)
        Description copied from class: IRInstruction
        Replaces an operand value with a new value.
        Specified by:
        replaceOperand in class IRInstruction
        Parameters:
        oldValue - the value to replace
        newValue - the replacement value
      • accept

        public <T> T accept​(IRVisitor<T> visitor)
        Description copied from class: IRInstruction
        Accepts a visitor for this instruction.
        Specified by:
        accept in class IRInstruction
        Type Parameters:
        T - the return type
        Parameters:
        visitor - the visitor to accept
        Returns:
        the visitor result
      • isTerminator

        public boolean isTerminator()
        Description copied from class: IRInstruction
        Checks if this instruction terminates a basic block.
        Overrides:
        isTerminator in class IRInstruction
        Returns:
        true if this is a terminator instruction
      • replaceTarget

        public void replaceTarget​(IRBlock oldTarget,
                                  IRBlock newTarget)
        Description copied from class: IRInstruction
        Replaces a target block in terminator instructions.
        Overrides:
        replaceTarget in class IRInstruction
        Parameters:
        oldTarget - the block to replace
        newTarget - the replacement block
      • copyWithNewOperands

        public IRInstruction copyWithNewOperands​(SSAValue newResult,
                                                 List<Value> newOperands)
        Description copied from class: IRInstruction
        Creates a copy of this instruction with new result and operands.
        Overrides:
        copyWithNewOperands in class IRInstruction
        Parameters:
        newResult - the new result value (may be null)
        newOperands - the new operand values
        Returns:
        a copy of this instruction, or null if copying not supported