prepare
<A extends AbstractState<A,H,V,T>,H extends HeapDomain<H>,V extends ValueDomain<V>,T extends TypeDomain<T>> org.apache.commons.lang3.tuple.Pair<AnalysisState<A,H,V,T>,ExpressionSet<SymbolicExpression>[]> prepare(Call call,
AnalysisState<A,H,V,T> callState,
InterproceduralAnalysis<A,H,V,T> interprocedural,
StatementStore<A,H,V,T> expressions,
Parameter[] formals,
ExpressionSet<SymbolicExpression>[] actuals)
throws SemanticException
Prepares the entryState for the targets of the given
Call
,
assuming that the state when the call is executed (after the evaluation
of the parameters) is
callState
, and each parameter to the call
is represented by an element of
parameters
. Here, no restrictions
on the order of the parameters is made: they can be passed as-is,
preserving their evaluation order (Java-like), or they may be passed
by-name (Python-like).
- Type Parameters:
A
- the type of AbstractState
H
- the type of the HeapDomain
V
- the type of the ValueDomain
T
- the type of TypeDomain
- Parameters:
call
- the call to be prepared
callState
- the analysis state where the call is to be
executed
interprocedural
- the interprocedural analysis of the program to
analyze
expressions
- the cache where analysis states of intermediate
expressions must be stored
formals
- the expressions representing the formal parameters
of the call
actuals
- the expressions representing the actual parameters
of the call
- Returns:
- the prepared state, ready to be used as entry-state for the
targets, and the expressions to use as parameters of the call
- Throws:
SemanticException
- if something goes wrong while preparing the
entry-state