Package com.ibm.wala.ipa.slicer
Class Slicer.SliceProblem
- java.lang.Object
-
- com.ibm.wala.ipa.slicer.Slicer.SliceProblem
-
- All Implemented Interfaces:
PartiallyBalancedTabulationProblem<Statement,PDG,Object>,TabulationProblem<Statement,PDG,Object>
- Enclosing class:
- Slicer
public static class Slicer.SliceProblem extends Object implements PartiallyBalancedTabulationProblem<Statement,PDG,Object>
Tabulation problem representing slicing
-
-
Constructor Summary
Constructors Constructor Description SliceProblem(Collection<Statement> roots, ISDG sdg, boolean backward)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description TabulationDomain<Object,Statement>getDomain()StatementgetFakeEntry(Statement node)If n is reached by a partially balanced parenthesis, what is the entry node we should use as the root of thePathEdgeto n? Note that the result must in fact be an entry node of the procedure containing n.IPartiallyBalancedFlowFunctions<Statement>getFunctionMap()IMergeFunctiongetMergeFunction()Special case: if supportsMerge(), then the problem is not really IFDS anymore.ISupergraph<Statement,PDG>getSupergraph()Collection<PathEdge<Statement>>initialSeeds()Define the set of path edges to start propagation with.
-
-
-
Constructor Detail
-
SliceProblem
public SliceProblem(Collection<Statement> roots, ISDG sdg, boolean backward)
-
-
Method Detail
-
getDomain
public TabulationDomain<Object,Statement> getDomain()
- Specified by:
getDomainin interfaceTabulationProblem<Statement,PDG,Object>
-
getFunctionMap
public IPartiallyBalancedFlowFunctions<Statement> getFunctionMap()
- Specified by:
getFunctionMapin interfacePartiallyBalancedTabulationProblem<Statement,PDG,Object>- Specified by:
getFunctionMapin interfaceTabulationProblem<Statement,PDG,Object>
-
getMergeFunction
public IMergeFunction getMergeFunction()
Description copied from interface:TabulationProblemSpecial case: if supportsMerge(), then the problem is not really IFDS anymore. (TODO: rename it?). Instead, we perform a merge operation before propagating at every program point. This way, we can implement standard interprocedural dataflow and ESP-style property simulation, and various other things.- Specified by:
getMergeFunctionin interfaceTabulationProblem<Statement,PDG,Object>- Returns:
- the merge function, or null if !supportsMerge()
-
getSupergraph
public ISupergraph<Statement,PDG> getSupergraph()
- Specified by:
getSupergraphin interfaceTabulationProblem<Statement,PDG,Object>
-
initialSeeds
public Collection<PathEdge<Statement>> initialSeeds()
Description copied from interface:TabulationProblemDefine the set of path edges to start propagation with.- Specified by:
initialSeedsin interfaceTabulationProblem<Statement,PDG,Object>
-
getFakeEntry
public Statement getFakeEntry(Statement node)
Description copied from interface:PartiallyBalancedTabulationProblemIf n is reached by a partially balanced parenthesis, what is the entry node we should use as the root of thePathEdgeto n? Note that the result must in fact be an entry node of the procedure containing n.- Specified by:
getFakeEntryin interfacePartiallyBalancedTabulationProblem<Statement,PDG,Object>
-
-