public class CISlicer
extends java.lang.Object
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 and Description |
|---|
CISlicer(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) |
| Modifier and Type | Method and Description |
|---|---|
java.util.Collection<Statement> |
computeBackwardThinSlice(java.util.Collection<Statement> seeds) |
java.util.Collection<Statement> |
computeBackwardThinSlice(Statement seed) |
static java.util.Map<Statement,java.util.Set<PointerKey>> |
scanForMod(SDG<InstanceKey> sdg,
PointerAnalysis<InstanceKey> pa)
Compute the set of pointer keys each statement mods
|
static java.util.Map<Statement,java.util.Set<PointerKey>> |
scanForMod(SDG<InstanceKey> sdg,
PointerAnalysis<InstanceKey> pa,
boolean ignoreAllocHeapDefs,
ModRef<InstanceKey> modRef)
Compute the set of pointer keys each statement mods.
|
static java.util.Map<Statement,java.util.Set<PointerKey>> |
scanForMod(SDG<InstanceKey> sdg,
PointerAnalysis<InstanceKey> pa,
ModRef<InstanceKey> modRef)
Compute the set of pointer keys each statement mods
|
static java.util.Map<Statement,java.util.Set<PointerKey>> |
scanForRef(SDG<InstanceKey> sdg,
PointerAnalysis<InstanceKey> pa)
Compute the set of pointer keys each statement refs
|
static java.util.Map<Statement,java.util.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 ..
|
public CISlicer(CallGraph cg, PointerAnalysis<InstanceKey> pa, Slicer.DataDependenceOptions dOptions, Slicer.ControlDependenceOptions cOptions)
public CISlicer(CallGraph cg, PointerAnalysis<InstanceKey> pa, ModRef<InstanceKey> modRef, Slicer.DataDependenceOptions dOptions, Slicer.ControlDependenceOptions cOptions) throws java.lang.IllegalArgumentException
java.lang.IllegalArgumentExceptionpublic CISlicer(SDG<InstanceKey> sdg, PointerAnalysis<InstanceKey> pa, ModRef<InstanceKey> modRef)
public java.util.Collection<Statement> computeBackwardThinSlice(Statement seed)
public java.util.Collection<Statement> computeBackwardThinSlice(java.util.Collection<Statement> seeds)
public static java.util.Map<Statement,java.util.Set<PointerKey>> scanForMod(SDG<InstanceKey> sdg, PointerAnalysis<InstanceKey> pa)
public static java.util.Map<Statement,java.util.Set<PointerKey>> scanForRef(SDG<InstanceKey> sdg, PointerAnalysis<InstanceKey> pa)
public static java.util.Map<Statement,java.util.Set<PointerKey>> scanForMod(SDG<InstanceKey> sdg, PointerAnalysis<InstanceKey> pa, ModRef<InstanceKey> modRef)
public static java.util.Map<Statement,java.util.Set<PointerKey>> scanForMod(SDG<InstanceKey> sdg, PointerAnalysis<InstanceKey> pa, boolean ignoreAllocHeapDefs, ModRef<InstanceKey> modRef)
public static java.util.Map<Statement,java.util.Set<PointerKey>> scanForRef(SDG<InstanceKey> sdg, PointerAnalysis<InstanceKey> pa, ModRef<InstanceKey> modRef)