D - The type of data-flow facts to be computed by the tabulation problem.V - The type of values to be computed along flow edges.I - The type of inter-procedural control-flow graph being used.public abstract class DefaultIDETabulationProblem<N,D,M,V,I extends InterproceduralCFG<N,M>> extends DefaultIFDSTabulationProblem<N,D,M,I> implements IDETabulationProblem<N,D,M,V,I>
IDETabulationProblems that automatically caches values
that ought to be cached. This class uses the Factory Method design pattern.
The InterproceduralCFG is passed into the constructor so that it can be conveniently
reused for solving multiple different IDETabulationProblems.
This class is specific to Soot.| Constructor and Description |
|---|
DefaultIDETabulationProblem(I icfg) |
| Modifier and Type | Method and Description |
|---|---|
EdgeFunction<V> |
allTopFunction()
Returns a function mapping everything to top.
|
protected abstract EdgeFunction<V> |
createAllTopFunction() |
protected abstract EdgeFunctions<N,D,M,V> |
createEdgeFunctionsFactory() |
protected abstract JoinLattice<V> |
createJoinLattice() |
EdgeFunctions<N,D,M,V> |
edgeFunctions()
Returns the edge functions that describe how V-values are transformed along
flow function edges.
|
JoinLattice<V> |
joinLattice()
Returns the lattice describing how values of type V need to be joined.
|
autoAddZero, computeValues, createFlowFunctionsFactory, createZeroValue, flowFunctions, followReturnsPastSeeds, interproceduralCFG, numThreads, recordEdges, zeroValueclone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitflowFunctions, initialSeeds, interproceduralCFG, zeroValueautoAddZero, computeValues, followReturnsPastSeeds, numThreads, recordEdgespublic DefaultIDETabulationProblem(I icfg)
protected abstract EdgeFunction<V> createAllTopFunction()
protected abstract JoinLattice<V> createJoinLattice()
protected abstract EdgeFunctions<N,D,M,V> createEdgeFunctionsFactory()
public final EdgeFunction<V> allTopFunction()
IDETabulationProblemallTopFunction in interface IDETabulationProblem<N,D,M,V,I extends InterproceduralCFG<N,M>>public final JoinLattice<V> joinLattice()
IDETabulationProblemjoinLattice in interface IDETabulationProblem<N,D,M,V,I extends InterproceduralCFG<N,M>>public final EdgeFunctions<N,D,M,V> edgeFunctions()
IDETabulationProblemedgeFunctions in interface IDETabulationProblem<N,D,M,V,I extends InterproceduralCFG<N,M>>