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>
IDETabulationProblem
s 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 IDETabulationProblem
s.
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, zeroValue
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
flowFunctions, initialSeeds, interproceduralCFG, zeroValue
autoAddZero, computeValues, followReturnsPastSeeds, numThreads, recordEdges
public 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()
IDETabulationProblem
allTopFunction
in interface IDETabulationProblem<N,D,M,V,I extends InterproceduralCFG<N,M>>
public final JoinLattice<V> joinLattice()
IDETabulationProblem
joinLattice
in interface IDETabulationProblem<N,D,M,V,I extends InterproceduralCFG<N,M>>
public final EdgeFunctions<N,D,M,V> edgeFunctions()
IDETabulationProblem
edgeFunctions
in interface IDETabulationProblem<N,D,M,V,I extends InterproceduralCFG<N,M>>