N
- The type of nodes in the interprocedural control-flow graph.
Typically Unit
.D
- The type of data-flow facts to be computed by the tabulation
problem.M
- The type of objects used to represent methods. Typically
SootMethod
.public interface FlowFunctions<N,D,M>
Modifier and Type | Method and Description |
---|---|
FlowFunction<D> |
getCallFlowFunction(N callStmt,
M destinationMethod)
Returns the flow function that computes the flow for a call statement.
|
FlowFunction<D> |
getCallToReturnFlowFunction(N callSite,
N returnSite)
Returns the flow function that computes the flow from a call site to a
successor statement just after the call.
|
FlowFunction<D> |
getNormalFlowFunction(N curr,
N succ)
Returns the flow function that computes the flow for a normal statement,
i.e., a statement that is neither a call nor an exit statement.
|
FlowFunction<D> |
getReturnFlowFunction(N callSite,
M calleeMethod,
N exitStmt,
N returnSite)
Returns the flow function that computes the flow for a an exit from a
method.
|
FlowFunction<D> getNormalFlowFunction(N curr, N succ)
curr
- The current statement.succ
- The successor for which the flow is computed. This value can
be used to compute a branched analysis that propagates
different values depending on where control0flow branches.FlowFunction<D> getCallFlowFunction(N callStmt, M destinationMethod)
callStmt
- The statement containing the invoke expression giving rise to
this call.destinationMethod
- The concrete target method for which the flow is computed.FlowFunction<D> getReturnFlowFunction(N callSite, M calleeMethod, N exitStmt, N returnSite)
callSite
- One of all the call sites in the program that called the
method from which the exitStmt is actually returning. This
information can be exploited to compute a value that depends on
information from before the call.
Note: This value might be null
if
using a tabulation problem with SolverConfiguration.followReturnsPastSeeds()
returning true
in a situation where the call graph
does not contain a caller for the method that is returned from.calleeMethod
- The method from which exitStmt returns.exitStmt
- The statement exiting the method, typically a return or throw
statement.returnSite
- One of the successor statements of the callSite. There may be
multiple successors in case of possible exceptional flow. This
method will be called for each such successor.
Note: This value might be null
if
using a tabulation problem with SolverConfiguration.followReturnsPastSeeds()
returning true
in a situation where the call graph
does not contain a caller for the method that is returned from.FlowFunction<D> getCallToReturnFlowFunction(N callSite, N returnSite)
getCallFlowFunction(Object, Object)
, only
such information that actually concerns the callee method. All other
information, e.g. information that cannot be modified by the call, is
passed along this call-return edge.callSite
- The statement containing the invoke expression giving rise to
this call.returnSite
- The return site to which the information is propagated. For
exceptional flow, this may actually be the start of an
exception handler.