protected class BiDiIDESolver.SingleDirectionSolver extends IDESolver<N,BiDiIDESolver.AbstractionWithSourceStmt,M,V,I>
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 |
---|
SingleDirectionSolver(IDETabulationProblem<N,BiDiIDESolver.AbstractionWithSourceStmt,M,V,I> ifdsProblem,
java.lang.String debugName) |
Modifier and Type | Method and Description |
---|---|
protected java.lang.String |
getDebugName()
Returns a String used to identify the output of this solver in debug mode.
|
protected CountingThreadPoolExecutor |
getExecutor()
Factory method for this solver's thread-pool executor.
|
protected void |
propagate(BiDiIDESolver.AbstractionWithSourceStmt sourceVal,
N target,
BiDiIDESolver.AbstractionWithSourceStmt targetVal,
EdgeFunction<V> f,
N relatedCallSite,
boolean isUnbalancedReturn)
Propagates the flow further down the exploded super graph, merging any edge function that might
already have been computed for targetVal at target.
|
protected void |
propagateUnbalancedReturnFlow(N retSiteC,
BiDiIDESolver.AbstractionWithSourceStmt targetVal,
EdgeFunction<V> edgeFunction,
N relatedCallSite) |
protected BiDiIDESolver.AbstractionWithSourceStmt |
restoreContextOnReturnedFact(N callSite,
BiDiIDESolver.AbstractionWithSourceStmt d4,
BiDiIDESolver.AbstractionWithSourceStmt d5)
This method will be called for each incoming edge and can be used to
transfer knowledge from the calling edge to the returning edge, without
affecting the summary edges at the callee.
|
addIncoming, awaitCompletionComputeValuesAndShutdown, computeCallFlowFunction, computeCallToReturnFlowFunction, computeNormalFlowFunction, computeReturnFlowFunction, endSummary, incoming, joinValueAt, printStats, processExit, resultAt, resultsAt, scheduleEdgeProcessing, solve, submitInitialSeeds
public SingleDirectionSolver(IDETabulationProblem<N,BiDiIDESolver.AbstractionWithSourceStmt,M,V,I> ifdsProblem, java.lang.String debugName)
protected void propagateUnbalancedReturnFlow(N retSiteC, BiDiIDESolver.AbstractionWithSourceStmt targetVal, EdgeFunction<V> edgeFunction, N relatedCallSite)
propagateUnbalancedReturnFlow
in class IDESolver<N,BiDiIDESolver.AbstractionWithSourceStmt,M,V,I extends InterproceduralCFG<N,M>>
protected void propagate(BiDiIDESolver.AbstractionWithSourceStmt sourceVal, N target, BiDiIDESolver.AbstractionWithSourceStmt targetVal, EdgeFunction<V> f, N relatedCallSite, boolean isUnbalancedReturn)
IDESolver
propagate
in class IDESolver<N,BiDiIDESolver.AbstractionWithSourceStmt,M,V,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
)protected BiDiIDESolver.AbstractionWithSourceStmt restoreContextOnReturnedFact(N callSite, BiDiIDESolver.AbstractionWithSourceStmt d4, BiDiIDESolver.AbstractionWithSourceStmt d5)
IDESolver
restoreContextOnReturnedFact
in class IDESolver<N,BiDiIDESolver.AbstractionWithSourceStmt,M,V,I extends InterproceduralCFG<N,M>>
d4
- Fact stored with the incoming edge, i.e., present at the
caller sided5
- Fact that originally should be propagated to the caller.protected CountingThreadPoolExecutor getExecutor()
IDESolver
getExecutor
in class IDESolver<N,BiDiIDESolver.AbstractionWithSourceStmt,M,V,I extends InterproceduralCFG<N,M>>
protected java.lang.String getDebugName()
IDESolver
getDebugName
in class IDESolver<N,BiDiIDESolver.AbstractionWithSourceStmt,M,V,I extends InterproceduralCFG<N,M>>