Package com.ibm.wala.ipa.slicer.thin
Class CISlicer
- java.lang.Object
-
- com.ibm.wala.ipa.slicer.thin.CISlicer
-
- Direct Known Subclasses:
ThinSlicer
public class CISlicer extends Object
A cheap, context-insensitive slicer based on reachability over a custom SDG. This is a prototype implementation; not tuned. Currently supports backward slices only. TODO: Introduce a slicer interface common between this and the CS slicer. TODO: This hasn't been tested much. Need regression tests.
-
-
Constructor Summary
Constructors Constructor Description CISlicer(CallGraph cg, PointerAnalysis<InstanceKey> pa, ModRef modRef, Slicer.DataDependenceOptions dOptions, Slicer.ControlDependenceOptions cOptions)
CISlicer(CallGraph cg, PointerAnalysis<InstanceKey> pa, Slicer.DataDependenceOptions dOptions, Slicer.ControlDependenceOptions cOptions)
CISlicer(SDG sdg, PointerAnalysis<InstanceKey> pa, ModRef modRef)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description Collection<Statement>
computeBackwardThinSlice(Statement seed)
Collection<Statement>
computeBackwardThinSlice(Collection<Statement> seeds)
static Map<Statement,Set<PointerKey>>
scanForMod(SDG sdg, PointerAnalysis<InstanceKey> pa)
Compute the set of pointer keys each statement modsstatic Map<Statement,Set<PointerKey>>
scanForMod(SDG sdg, PointerAnalysis<InstanceKey> pa, boolean ignoreAllocHeapDefs, ModRef modRef)
Compute the set of pointer keys each statement mods.static Map<Statement,Set<PointerKey>>
scanForMod(SDG sdg, PointerAnalysis<InstanceKey> pa, ModRef modRef)
Compute the set of pointer keys each statement modsstatic Map<Statement,Set<PointerKey>>
scanForRef(SDG sdg, PointerAnalysis<InstanceKey> pa)
Compute the set of pointer keys each statement refsstatic Map<Statement,Set<PointerKey>>
scanForRef(SDG sdg, PointerAnalysis<InstanceKey> pa, ModRef modRef)
Compute the set of PointerKeys each statement refs.Be careful to avoid eager PDG construction here! That means ..
-
-
-
Constructor Detail
-
CISlicer
public CISlicer(CallGraph cg, PointerAnalysis<InstanceKey> pa, Slicer.DataDependenceOptions dOptions, Slicer.ControlDependenceOptions cOptions)
-
CISlicer
public CISlicer(CallGraph cg, PointerAnalysis<InstanceKey> pa, ModRef modRef, Slicer.DataDependenceOptions dOptions, Slicer.ControlDependenceOptions cOptions) throws IllegalArgumentException
- Throws:
IllegalArgumentException
-
CISlicer
public CISlicer(SDG sdg, PointerAnalysis<InstanceKey> pa, ModRef modRef)
-
-
Method Detail
-
computeBackwardThinSlice
public Collection<Statement> computeBackwardThinSlice(Statement seed)
-
computeBackwardThinSlice
public Collection<Statement> computeBackwardThinSlice(Collection<Statement> seeds)
-
scanForMod
public static Map<Statement,Set<PointerKey>> scanForMod(SDG sdg, PointerAnalysis<InstanceKey> pa)
Compute the set of pointer keys each statement mods
-
scanForRef
public static Map<Statement,Set<PointerKey>> scanForRef(SDG sdg, PointerAnalysis<InstanceKey> pa)
Compute the set of pointer keys each statement refs
-
scanForMod
public static Map<Statement,Set<PointerKey>> scanForMod(SDG sdg, PointerAnalysis<InstanceKey> pa, ModRef modRef)
Compute the set of pointer keys each statement mods
-
scanForMod
public static Map<Statement,Set<PointerKey>> scanForMod(SDG sdg, PointerAnalysis<InstanceKey> pa, boolean ignoreAllocHeapDefs, ModRef modRef)
Compute the set of pointer keys each statement mods. Be careful to avoid eager PDG construction here! That means .. don't iterate over SDG statements!
-
scanForRef
public static Map<Statement,Set<PointerKey>> scanForRef(SDG sdg, PointerAnalysis<InstanceKey> pa, ModRef modRef)
Compute the set of PointerKeys each statement refs.Be careful to avoid eager PDG construction here! That means .. don't iterate over SDG statements!
-
-