JoinHandlingNodesIFDSSolver
instead.@Deprecated public class PathTrackingIFDSSolver<N,D extends LinkedNode<D>,M,I extends InterproceduralCFG<N,M>> extends IFDSSolver<N,D,M,I>
IFDSSolver
that tracks paths for reporting. To do so, it requires that data-flow abstractions implement the LinkedNode interface.
The solver implements a cache of data-flow facts for each statement and source value. If for the same statement and source value the same
target value is seen again (as determined through a cache hit), then the solver propagates the cached value but at the same time links
both target values with one another.IFDSSolver.BinaryDomain
Modifier and Type | Field and Description |
---|---|
protected java.util.Map<heros.solver.PathTrackingIFDSSolver.CacheEntry,LinkedNode<D>> |
cache
Deprecated.
|
allTop, computedInterPEdges, computedIntraPEdges, computeValues, DEBUG, DEFAULT_CACHE_BUILDER, durationFlowFunctionApplication, durationFlowFunctionConstruction, edgeFunctions, efCache, endSummary, executor, ffCache, flowFunctionApplicationCount, flowFunctionConstructionCount, flowFunctions, followReturnsPastSeeds, icfg, incoming, initialSeeds, jumpFn, logger, numThreads, propagationCount, unbalancedRetSites, val, valueLattice, zeroValue
Constructor and Description |
---|
PathTrackingIFDSSolver(IFDSTabulationProblem<N,D,M,I> ifdsProblem)
Deprecated.
|
Modifier and Type | Method and Description |
---|---|
protected void |
propagate(D sourceVal,
N target,
D targetVal,
EdgeFunction<IFDSSolver.BinaryDomain> f,
N relatedCallSite,
boolean isUnbalancedReturn)
Deprecated.
Propagates the flow further down the exploded super graph, merging any edge function that might
already have been computed for targetVal at target.
|
ifdsResultsAt
addIncoming, awaitCompletionComputeValuesAndShutdown, computeCallFlowFunction, computeCallToReturnFlowFunction, computeNormalFlowFunction, computeReturnFlowFunction, endSummary, getDebugName, getExecutor, incoming, joinValueAt, printStats, processExit, propagateUnbalancedReturnFlow, restoreContextOnReturnedFact, resultAt, resultsAt, scheduleEdgeProcessing, solve, submitInitialSeeds
protected final java.util.Map<heros.solver.PathTrackingIFDSSolver.CacheEntry,LinkedNode<D extends LinkedNode<D>>> cache
public PathTrackingIFDSSolver(IFDSTabulationProblem<N,D,M,I> ifdsProblem)
protected void propagate(D sourceVal, N target, D targetVal, EdgeFunction<IFDSSolver.BinaryDomain> f, N relatedCallSite, boolean isUnbalancedReturn)
IDESolver
propagate
in class IDESolver<N,D extends LinkedNode<D>,M,IFDSSolver.BinaryDomain,I extends InterproceduralCFG<N,M>>
sourceVal
- the source value of the propagated summary edgetarget
- the target statementtargetVal
- the target value at the target statementf
- the new edge function computed from (s0,sourceVal) to (target,targetVal)relatedCallSite
- for call and return flows the related call statement, null
otherwise
(this value is not used within this implementation but may be useful for subclasses of IDESolver
)isUnbalancedReturn
- true
if this edge is propagating an unbalanced return
(this value is not used within this implementation but may be useful for subclasses of IDESolver
)