Class SSAAbstractInvokeInstruction

java.lang.Object
com.ibm.wala.ssa.SSAInstruction
com.ibm.wala.ssa.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 Details

    • 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 Details

    • 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 Details

    • 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.
    • getNumberOfDefs

      public int getNumberOfDefs()
      Overrides:
      getNumberOfDefs in class SSAInstruction
    • 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.
    • getDef

      public int getDef()
      Overrides:
      getDef in class SSAInstruction
    • getNumberOfPositionalParameters

      public abstract int getNumberOfPositionalParameters()
      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?
    • getInvocationCode

      public IInvokeInstruction.IDispatch getInvocationCode()
      See Also:
    • 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
    • toString

      public String toString(SymbolTable symbolTable)
      Specified by:
      toString in class SSAInstruction