Class CISlicer
java.lang.Object
com.ibm.wala.ipa.slicer.thin.CISlicer
- Direct Known Subclasses:
ThinSlicer
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
ConstructorDescriptionCISlicer
(CallGraph cg, PointerAnalysis<InstanceKey> pa, ModRef<InstanceKey> modRef, Slicer.DataDependenceOptions dOptions, Slicer.ControlDependenceOptions cOptions) CISlicer
(CallGraph cg, PointerAnalysis<InstanceKey> pa, Slicer.DataDependenceOptions dOptions, Slicer.ControlDependenceOptions cOptions) CISlicer
(SDG<InstanceKey> sdg, PointerAnalysis<InstanceKey> pa, ModRef<InstanceKey> modRef) -
Method Summary
Modifier and TypeMethodDescriptionstatic Map
<Statement, Set<PointerKey>> scanForMod
(SDG<InstanceKey> sdg, PointerAnalysis<InstanceKey> pa) Compute the set of pointer keys each statement modsstatic Map
<Statement, Set<PointerKey>> scanForMod
(SDG<InstanceKey> sdg, PointerAnalysis<InstanceKey> pa, boolean ignoreAllocHeapDefs, ModRef<InstanceKey> modRef) Compute the set of pointer keys each statement mods.static Map
<Statement, Set<PointerKey>> scanForMod
(SDG<InstanceKey> sdg, PointerAnalysis<InstanceKey> pa, ModRef<InstanceKey> modRef) Compute the set of pointer keys each statement modsstatic Map
<Statement, Set<PointerKey>> scanForRef
(SDG<InstanceKey> sdg, PointerAnalysis<InstanceKey> pa) Compute the set of pointer keys each statement refsstatic Map
<Statement, Set<PointerKey>> scanForRef
(SDG<InstanceKey> sdg, PointerAnalysis<InstanceKey> pa, ModRef<InstanceKey> modRef) Compute the set of PointerKeys each statement refs.Be careful to avoid eager PDG construction here! That means ..
-
Constructor Details
-
CISlicer
public CISlicer(CallGraph cg, PointerAnalysis<InstanceKey> pa, Slicer.DataDependenceOptions dOptions, Slicer.ControlDependenceOptions cOptions) -
CISlicer
public CISlicer(CallGraph cg, PointerAnalysis<InstanceKey> pa, ModRef<InstanceKey> modRef, Slicer.DataDependenceOptions dOptions, Slicer.ControlDependenceOptions cOptions) throws IllegalArgumentException - Throws:
IllegalArgumentException
-
CISlicer
-
-
Method Details
-
computeBackwardThinSlice
-
computeBackwardThinSlice
-
scanForMod
public static Map<Statement,Set<PointerKey>> scanForMod(SDG<InstanceKey> sdg, PointerAnalysis<InstanceKey> pa) Compute the set of pointer keys each statement mods -
scanForRef
public static Map<Statement,Set<PointerKey>> scanForRef(SDG<InstanceKey> sdg, PointerAnalysis<InstanceKey> pa) Compute the set of pointer keys each statement refs -
scanForMod
public static Map<Statement,Set<PointerKey>> scanForMod(SDG<InstanceKey> sdg, PointerAnalysis<InstanceKey> pa, ModRef<InstanceKey> modRef) Compute the set of pointer keys each statement mods -
scanForMod
public static Map<Statement,Set<PointerKey>> scanForMod(SDG<InstanceKey> sdg, PointerAnalysis<InstanceKey> pa, boolean ignoreAllocHeapDefs, ModRef<InstanceKey> 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<InstanceKey> sdg, PointerAnalysis<InstanceKey> pa, ModRef<InstanceKey> 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!
-