Class SSAAbstractInvokeInstruction
java.lang.Object
com.ibm.wala.ssa.SSAInstruction
com.ibm.wala.ssa.SSAAbstractInvokeInstruction
- Direct Known Subclasses:
MultiReturnValueInvokeInstruction, SSAInvokeInstruction
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.
-
Nested Class Summary
Nested classes/interfaces inherited from class SSAInstruction
SSAInstruction.IVisitor, SSAInstruction.Visitor -
Field Summary
FieldsModifier and TypeFieldDescriptionprotected final intThe value number which represents the exception object which the call may throw.protected final CallSiteReferenceThe call site, containing the program counter location and the method being called.Fields inherited from class SSAInstruction
NO_INDEX -
Constructor Summary
ConstructorsModifierConstructorDescriptionprotectedSSAAbstractInvokeInstruction(int iindex, int exception, CallSiteReference site) -
Method Summary
Modifier and TypeMethodDescriptionWhat is the declared return type of the called methodWhat method is the declared callee?intgetDef()intgetDef(int i) Return the ith defintReturn the value number which is def'fed by this call instruction if the call returns exceptionally.intabstract intHow many parameters does this call specify?abstract intHow many distinct values does this call return?intintabstract intgetReturnValue(int i) What is the the value number of the ith value returned by this callbooleanhasDef()Does this instruction define a normal value, as distinct from a set of exceptions possibly thrown by it (e.g.booleanMight this call dispatch to one of several possible methods? i.e., in Java, is it an invokeinterface or invokevirtualbooleanbooleanisPEI()booleanIs this a 'special' call? (invokespecial in Java)booleanisStatic()Is this a 'static' call? (invokestatic in Java)toString(SymbolTable symbolTable) Methods inherited from class SSAInstruction
copyForSSA, equals, getExceptionTypes, getNumberOfUses, getUse, getValueString, hashCode, iIndex, setInstructionIndex, toString, visit
-
Field Details
-
exception
protected final int exceptionThe 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.
-
-
Constructor Details
-
SSAAbstractInvokeInstruction
- 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
- 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:
getNumberOfDefsin classSSAInstruction
-
getDef
public int getDef(int i) Description copied from class:SSAInstructionReturn the ith def- Overrides:
getDefin classSSAInstruction- 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:SSAInstructionDoes this instruction define a normal value, as distinct from a set of exceptions possibly thrown by it (e.g. for invoke instructions).- Overrides:
hasDefin classSSAInstruction- Returns:
- true if the instruction does define a proper value.
-
getDef
public int getDef()- Overrides:
getDefin classSSAInstruction
-
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
What is the declared return type of the called method -
getDeclaredTarget
What method is the declared callee? -
getInvocationCode
- See Also:
-
isPEI
public boolean isPEI()- Overrides:
isPEIin classSSAInstruction- Returns:
- true iff this instruction may throw an exception.
-
isFallThrough
public boolean isFallThrough()- Specified by:
isFallThroughin classSSAInstruction- Returns:
- true iff this instruction may fall through to the next
-
toString
- Specified by:
toStringin classSSAInstruction
-