class StaticAnalysis.InvokeTypeFlow extends StaticAnalysis.TypeFlow
virtual
and
interface
calls, the types
of this
node are the receiver types. When a new receiver type is added, a new callee might be added.
Adding a new callee means linking the type flow of the actual parameters with the formal
parameters of the callee, and linking the return value of the callee with the return value
state of the invocation.
Statically bindable methods calls (static
and
special
calls) have only one callee, but use the same code for
simplicity.Modifier and Type | Field and Description |
---|---|
private StaticAnalysis.TypeFlow[] |
actualParameters |
private StaticAnalysis.TypeFlow |
actualReturn |
private Set<ResolvedJavaMethod> |
callees |
private MethodCallTargetNode |
callTarget |
Modifier | Constructor and Description |
---|---|
protected |
InvokeTypeFlow(MethodCallTargetNode callTarget,
StaticAnalysis.TypeFlow[] actualParameterFlows,
StaticAnalysis.TypeFlow actualReturnFlow) |
Modifier and Type | Method and Description |
---|---|
private void |
linkCallee(ResolvedJavaMethod callee) |
protected void |
process()
Processing of the worklist element: propagate the types to all usages.
|
addTypes, addUse, getTypes
private final MethodCallTargetNode callTarget
private final StaticAnalysis.TypeFlow[] actualParameters
private final StaticAnalysis.TypeFlow actualReturn
private final Set<ResolvedJavaMethod> callees
protected InvokeTypeFlow(MethodCallTargetNode callTarget, StaticAnalysis.TypeFlow[] actualParameterFlows, StaticAnalysis.TypeFlow actualReturnFlow)
private void linkCallee(ResolvedJavaMethod callee)
protected void process()
StaticAnalysis.TypeFlow
process
in class StaticAnalysis.TypeFlow