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()
Statement
getFakeEntry(Statement node)
If n is reached by a partially balanced parenthesis, what is the entry node we should use as the root of thePathEdge
to n? Note that the result must in fact be an entry node of the procedure containing n.IPartiallyBalancedFlowFunctions<Statement>
getFunctionMap()
IMergeFunction
getMergeFunction()
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:
getDomain
in interfaceTabulationProblem<Statement,PDG,Object>
-
getFunctionMap
public IPartiallyBalancedFlowFunctions<Statement> getFunctionMap()
- Specified by:
getFunctionMap
in interfacePartiallyBalancedTabulationProblem<Statement,PDG,Object>
- Specified by:
getFunctionMap
in interfaceTabulationProblem<Statement,PDG,Object>
-
getMergeFunction
public IMergeFunction getMergeFunction()
Description copied from interface:TabulationProblem
Special 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:
getMergeFunction
in interfaceTabulationProblem<Statement,PDG,Object>
- Returns:
- the merge function, or null if !supportsMerge()
-
getSupergraph
public ISupergraph<Statement,PDG> getSupergraph()
- Specified by:
getSupergraph
in interfaceTabulationProblem<Statement,PDG,Object>
-
initialSeeds
public Collection<PathEdge<Statement>> initialSeeds()
Description copied from interface:TabulationProblem
Define the set of path edges to start propagation with.- Specified by:
initialSeeds
in interfaceTabulationProblem<Statement,PDG,Object>
-
getFakeEntry
public Statement getFakeEntry(Statement node)
Description copied from interface:PartiallyBalancedTabulationProblem
If n is reached by a partially balanced parenthesis, what is the entry node we should use as the root of thePathEdge
to n? Note that the result must in fact be an entry node of the procedure containing n.- Specified by:
getFakeEntry
in interfacePartiallyBalancedTabulationProblem<Statement,PDG,Object>
-
-