Class SSAAbstractInvokeInstruction

  • Direct Known Subclasses:
    MultiReturnValueInvokeInstruction, SSAInvokeInstruction

    public abstract class SSAAbstractInvokeInstruction
    extends SSAInstruction
    A Call instruction. Note that different languages have different notions of what a call is. This is an abstract superclass which encapsulates the common functionality that all languages share, so far.
    • Field Detail

      • exception

        protected final int exception
        The value number which represents the exception object which the call may throw.
      • site

        protected final CallSiteReference site
        The call site, containing the program counter location and the method being called.
    • Constructor Detail

      • SSAAbstractInvokeInstruction

        protected SSAAbstractInvokeInstruction​(int iindex,
                                               int exception,
                                               CallSiteReference site)
        Parameters:
        exception - The value number which represents the exception object which the call may throw.
        site - The call site, containing the program counter location and the method being called.
    • Method Detail

      • getCallSite

        public CallSiteReference getCallSite()
        Returns:
        The call site, containing the program counter location and the method being called.
      • isStatic

        public boolean isStatic()
        Is this a 'static' call? (invokestatic in Java)
      • isDispatch

        public boolean isDispatch()
        Might this call dispatch to one of several possible methods? i.e., in Java, is it an invokeinterface or invokevirtual
      • isSpecial

        public boolean isSpecial()
        Is this a 'special' call? (invokespecial in Java)
      • getReceiver

        public int getReceiver()
        Returns:
        the value number of the receiver of a virtual call
      • getProgramCounter

        public int getProgramCounter()
        Returns:
        the program counter (index into the method's bytecode) for this call site.
      • getDef

        public int getDef​(int i)
        Description copied from class: SSAInstruction
        Return the ith def
        Overrides:
        getDef in class SSAInstruction
        Parameters:
        i - number of the def, starting at 0.
      • getException

        public int getException()
        Return the value number which is def'fed by this call instruction if the call returns exceptionally.
      • hasDef

        public boolean hasDef()
        Description copied from class: SSAInstruction
        Does this instruction define a normal value, as distinct from a set of exceptions possibly thrown by it (e.g. for invoke instructions).
        Overrides:
        hasDef in class SSAInstruction
        Returns:
        true if the instruction does define a proper value.
      • getNumberOfParameters

        public abstract int getNumberOfParameters()
        How many parameters does this call specify?
      • getNumberOfReturnValues

        public abstract int getNumberOfReturnValues()
        How many distinct values does this call return?
      • getReturnValue

        public abstract int getReturnValue​(int i)
        What is the the value number of the ith value returned by this call
      • getDeclaredResultType

        public TypeReference getDeclaredResultType()
        What is the declared return type of the called method
      • getDeclaredTarget

        public MethodReference getDeclaredTarget()
        What method is the declared callee?
      • isPEI

        public boolean isPEI()
        Overrides:
        isPEI in class SSAInstruction
        Returns:
        true iff this instruction may throw an exception.
      • isFallThrough

        public boolean isFallThrough()
        Specified by:
        isFallThrough in class SSAInstruction
        Returns:
        true iff this instruction may fall through to the next