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, submitInitialSeedspublic 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)
IDESolverpropagate 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)
IDESolverrestoreContextOnReturnedFact 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()
IDESolvergetExecutor in class IDESolver<N,BiDiIDESolver.AbstractionWithSourceStmt,M,V,I extends InterproceduralCFG<N,M>>protected java.lang.String getDebugName()
IDESolvergetDebugName in class IDESolver<N,BiDiIDESolver.AbstractionWithSourceStmt,M,V,I extends InterproceduralCFG<N,M>>