Remove unnecessary `klass` argument and propagate back to callers (#174)

This commit is contained in:
Ben Liblit 2017-05-03 18:25:00 -05:00 committed by Manu Sridharan
parent 97a6496c1f
commit 9159ea7636
12 changed files with 51 additions and 51 deletions

View File

@ -137,7 +137,7 @@ public class SlicerTest {
// compute a data slice
final PointerAnalysis<InstanceKey> pointerAnalysis = builder.getPointerAnalysis();
Collection<Statement> computeBackwardSlice = Slicer.computeBackwardSlice(s, cg, pointerAnalysis,
InstanceKey.class, DataDependenceOptions.FULL, ControlDependenceOptions.NONE);
DataDependenceOptions.FULL, ControlDependenceOptions.NONE);
Collection<Statement> slice = computeBackwardSlice;
dumpSlice(slice);
@ -168,7 +168,7 @@ public class SlicerTest {
// compute a data slice
final PointerAnalysis<InstanceKey> pointerAnalysis = builder.getPointerAnalysis();
Collection<Statement> computeBackwardSlice = Slicer.computeBackwardSlice(s, cg, pointerAnalysis,
InstanceKey.class, DataDependenceOptions.FULL, ControlDependenceOptions.NONE);
DataDependenceOptions.FULL, ControlDependenceOptions.NONE);
Collection<Statement> slice = computeBackwardSlice;
dumpSlice(slice);
@ -192,7 +192,7 @@ public class SlicerTest {
System.err.println("Statement: " + s);
// compute a data slice
final PointerAnalysis<InstanceKey> pointerAnalysis = builder.getPointerAnalysis();
Collection<Statement> slice = Slicer.computeBackwardSlice(s, cg, pointerAnalysis, InstanceKey.class, DataDependenceOptions.FULL,
Collection<Statement> slice = Slicer.computeBackwardSlice(s, cg, pointerAnalysis, DataDependenceOptions.FULL,
ControlDependenceOptions.NONE);
dumpSlice(slice);
Assert.assertEquals(slice.toString(), 1, countAllocations(slice));
@ -216,7 +216,7 @@ public class SlicerTest {
System.err.println("Statement: " + s);
// compute a data slice
final PointerAnalysis<InstanceKey> pointerAnalysis = builder.getPointerAnalysis();
Collection<Statement> slice = Slicer.computeForwardSlice(s, cg, pointerAnalysis, InstanceKey.class, DataDependenceOptions.FULL,
Collection<Statement> slice = Slicer.computeForwardSlice(s, cg, pointerAnalysis, DataDependenceOptions.FULL,
ControlDependenceOptions.NONE);
dumpSlice(slice);
Assert.assertEquals(slice.toString(), 4, slice.size());
@ -240,7 +240,7 @@ public class SlicerTest {
System.err.println("Statement: " + s);
// compute a data slice
final PointerAnalysis<InstanceKey> pointerAnalysis = builder.getPointerAnalysis();
Collection<Statement> slice = Slicer.computeForwardSlice(s, cg, pointerAnalysis, InstanceKey.class,
Collection<Statement> slice = Slicer.computeForwardSlice(s, cg, pointerAnalysis,
DataDependenceOptions.FULL, ControlDependenceOptions.NONE);
dumpSlice(slice);
Assert.assertEquals(slice.toString(), 7, slice.size());
@ -270,7 +270,7 @@ public class SlicerTest {
System.err.println("Statement: " + s);
// compute a data slice
final PointerAnalysis<InstanceKey> pointerAnalysis = builder.getPointerAnalysis();
Collection<Statement> slice = Slicer.computeForwardSlice(s, cg, pointerAnalysis, InstanceKey.class,
Collection<Statement> slice = Slicer.computeForwardSlice(s, cg, pointerAnalysis,
DataDependenceOptions.FULL, ControlDependenceOptions.NONE);
dumpSlice(slice);
}
@ -299,12 +299,12 @@ public class SlicerTest {
System.err.println("Statement: " + s);
// compute a backward slice, with data dependence and no exceptional control dependence
final PointerAnalysis<InstanceKey> pointerAnalysis = builder.getPointerAnalysis();
Collection<Statement> slice = Slicer.computeBackwardSlice(s, cg, pointerAnalysis, InstanceKey.class, DataDependenceOptions.FULL,
Collection<Statement> slice = Slicer.computeBackwardSlice(s, cg, pointerAnalysis, DataDependenceOptions.FULL,
ControlDependenceOptions.NO_EXCEPTIONAL_EDGES);
dumpSlice(slice);
Assert.assertEquals(4, countInvokes(slice));
// should only get 4 statements total when ignoring control dependences completely
slice = Slicer.computeBackwardSlice(s, cg, pointerAnalysis, InstanceKey.class, DataDependenceOptions.FULL,
slice = Slicer.computeBackwardSlice(s, cg, pointerAnalysis, DataDependenceOptions.FULL,
ControlDependenceOptions.NONE);
Assert.assertEquals(slice.toString(), 4, slice.size());
}
@ -326,7 +326,7 @@ public class SlicerTest {
System.err.println("Statement: " + s);
// compute a backward slice, with data dependence and no exceptional control dependence
final PointerAnalysis<InstanceKey> pointerAnalysis = builder.getPointerAnalysis();
Collection<Statement> slice = Slicer.computeBackwardSlice(s, cg, pointerAnalysis, InstanceKey.class, DataDependenceOptions.FULL,
Collection<Statement> slice = Slicer.computeBackwardSlice(s, cg, pointerAnalysis, DataDependenceOptions.FULL,
ControlDependenceOptions.NO_EXCEPTIONAL_EDGES);
//dumpSlice(slice);
Assert.assertEquals(/*slice.toString(), */5, countApplicationNormals(slice));
@ -350,7 +350,7 @@ public class SlicerTest {
System.err.println("Statement: " + s);
// compute a data slice
final PointerAnalysis<InstanceKey> pointerAnalysis = builder.getPointerAnalysis();
Collection<Statement> slice = Slicer.computeBackwardSlice(s, cg, pointerAnalysis, InstanceKey.class, DataDependenceOptions.NONE,
Collection<Statement> slice = Slicer.computeBackwardSlice(s, cg, pointerAnalysis, DataDependenceOptions.NONE,
ControlDependenceOptions.FULL);
dumpSlice(slice);
Assert.assertEquals(slice.toString(), 2, countConditionals(slice));
@ -374,7 +374,7 @@ public class SlicerTest {
System.err.println("Statement: " + s);
// compute a data slice
final PointerAnalysis<InstanceKey> pointerAnalysis = builder.getPointerAnalysis();
Collection<Statement> slice = Slicer.computeBackwardSlice(s, cg, pointerAnalysis, InstanceKey.class, DataDependenceOptions.NONE,
Collection<Statement> slice = Slicer.computeBackwardSlice(s, cg, pointerAnalysis, DataDependenceOptions.NONE,
ControlDependenceOptions.FULL);
dumpSlice(slice);
Assert.assertEquals(slice.toString(), 1, countConditionals(slice));
@ -398,7 +398,7 @@ public class SlicerTest {
System.err.println("Statement: " + s);
// compute a data slice
final PointerAnalysis<InstanceKey> pointerAnalysis = builder.getPointerAnalysis();
Collection<Statement> slice = Slicer.computeBackwardSlice(s, cg, pointerAnalysis, InstanceKey.class, DataDependenceOptions.NONE,
Collection<Statement> slice = Slicer.computeBackwardSlice(s, cg, pointerAnalysis, DataDependenceOptions.NONE,
ControlDependenceOptions.FULL);
dumpSlice(slice);
Assert.assertEquals(slice.toString(), 0, countConditionals(slice));
@ -423,13 +423,13 @@ public class SlicerTest {
// compute a no-data slice
final PointerAnalysis<InstanceKey> pointerAnalysis = builder.getPointerAnalysis();
Collection<Statement> slice = Slicer.computeBackwardSlice(s, cg, pointerAnalysis, InstanceKey.class, DataDependenceOptions.NONE,
Collection<Statement> slice = Slicer.computeBackwardSlice(s, cg, pointerAnalysis, DataDependenceOptions.NONE,
ControlDependenceOptions.FULL);
dumpSlice(slice);
Assert.assertEquals(0, countConditionals(slice));
// compute a full slice
slice = Slicer.computeBackwardSlice(s, cg, pointerAnalysis, InstanceKey.class,
slice = Slicer.computeBackwardSlice(s, cg, pointerAnalysis,
DataDependenceOptions.FULL, ControlDependenceOptions.FULL);
dumpSlice(slice);
Assert.assertEquals(slice.toString(), 1, countConditionals(slice));
@ -454,7 +454,7 @@ public class SlicerTest {
// compute a no-data slice
final PointerAnalysis<InstanceKey> pointerAnalysis = builder.getPointerAnalysis();
Collection<Statement> slice = Slicer.computeForwardSlice(s, cg, pointerAnalysis, InstanceKey.class,
Collection<Statement> slice = Slicer.computeForwardSlice(s, cg, pointerAnalysis,
DataDependenceOptions.NONE, ControlDependenceOptions.NO_EXCEPTIONAL_EDGES);
dumpSlice(slice);
Assert.assertTrue(slice.toString(), slice.size() > 1);
@ -479,7 +479,7 @@ public class SlicerTest {
// compute a no-data slice
final PointerAnalysis<InstanceKey> pointerAnalysis = builder.getPointerAnalysis();
Collection<Statement> slice = Slicer.computeForwardSlice(s, cg, pointerAnalysis, InstanceKey.class,
Collection<Statement> slice = Slicer.computeForwardSlice(s, cg, pointerAnalysis,
DataDependenceOptions.NONE, ControlDependenceOptions.NO_EXCEPTIONAL_EDGES);
dumpSlice(slice);
Assert.assertEquals(slice.toString(), 2, countInvokes(slice));
@ -503,7 +503,7 @@ public class SlicerTest {
System.err.println("Statement: " + s);
// compute a data slice
final PointerAnalysis<InstanceKey> pointerAnalysis = builder.getPointerAnalysis();
Collection<Statement> slice = Slicer.computeBackwardSlice(s, cg, pointerAnalysis, InstanceKey.class, DataDependenceOptions.FULL,
Collection<Statement> slice = Slicer.computeBackwardSlice(s, cg, pointerAnalysis, DataDependenceOptions.FULL,
ControlDependenceOptions.NONE);
dumpSlice(slice);
Assert.assertEquals(slice.toString(), 1, countAllocations(slice));
@ -527,7 +527,7 @@ public class SlicerTest {
System.err.println("Statement: " + s);
// compute a data slice
final PointerAnalysis<InstanceKey> pointerAnalysis = builder.getPointerAnalysis();
Collection<Statement> slice = Slicer.computeBackwardSlice(s, cg, pointerAnalysis, InstanceKey.class, DataDependenceOptions.FULL,
Collection<Statement> slice = Slicer.computeBackwardSlice(s, cg, pointerAnalysis, DataDependenceOptions.FULL,
ControlDependenceOptions.NONE);
dumpSlice(slice);
Assert.assertEquals(slice.toString(), 2, countAllocations(slice));
@ -552,7 +552,7 @@ public class SlicerTest {
System.err.println("Statement: " + s);
// compute a data slice
final PointerAnalysis<InstanceKey> pointerAnalysis = builder.getPointerAnalysis();
Collection<Statement> slice = Slicer.computeBackwardSlice(s, cg, pointerAnalysis, InstanceKey.class, DataDependenceOptions.FULL,
Collection<Statement> slice = Slicer.computeBackwardSlice(s, cg, pointerAnalysis, DataDependenceOptions.FULL,
ControlDependenceOptions.NONE);
dumpSlice(slice);
Assert.assertEquals(slice.toString(), 2, countAllocations(slice));
@ -579,7 +579,7 @@ public class SlicerTest {
// compute normal data slice
// compute a data slice
final PointerAnalysis<InstanceKey> pointerAnalysis = builder.getPointerAnalysis();
Collection<Statement> slice = Slicer.computeBackwardSlice(s, cg, pointerAnalysis, InstanceKey.class, DataDependenceOptions.FULL,
Collection<Statement> slice = Slicer.computeBackwardSlice(s, cg, pointerAnalysis, DataDependenceOptions.FULL,
ControlDependenceOptions.NONE);
dumpSlice(slice);
Assert.assertEquals(3, countAllocations(slice));
@ -587,7 +587,7 @@ public class SlicerTest {
// compute thin slice .. ignore base pointers
Collection<Statement> computeBackwardSlice = Slicer.computeBackwardSlice(s, cg, pointerAnalysis,
InstanceKey.class, DataDependenceOptions.NO_BASE_PTRS, ControlDependenceOptions.NONE);
DataDependenceOptions.NO_BASE_PTRS, ControlDependenceOptions.NONE);
slice = computeBackwardSlice;
dumpSlice(slice);
Assert.assertEquals(slice.toString(), 2, countAllocations(slice));
@ -612,7 +612,7 @@ public class SlicerTest {
System.err.println("Statement: " + s);
// compute a data slice
final PointerAnalysis<InstanceKey> pointerAnalysis = builder.getPointerAnalysis();
Collection<Statement> slice = Slicer.computeBackwardSlice(s, cg, pointerAnalysis, InstanceKey.class, DataDependenceOptions.FULL,
Collection<Statement> slice = Slicer.computeBackwardSlice(s, cg, pointerAnalysis, DataDependenceOptions.FULL,
ControlDependenceOptions.NONE);
dumpSlice(slice);
Assert.assertEquals(slice.toString(), 1, countAllocations(slice));
@ -638,7 +638,7 @@ public class SlicerTest {
System.err.println("Statement: " + s);
// compute a data slice
final PointerAnalysis<InstanceKey> pointerAnalysis = builder.getPointerAnalysis();
Collection<Statement> slice = Slicer.computeBackwardSlice(s, cg, pointerAnalysis, InstanceKey.class, DataDependenceOptions.FULL,
Collection<Statement> slice = Slicer.computeBackwardSlice(s, cg, pointerAnalysis, DataDependenceOptions.FULL,
ControlDependenceOptions.NONE);
dumpSlice(slice);
Assert.assertEquals(slice.toString(), 2, countAllocations(slice));
@ -663,7 +663,7 @@ public class SlicerTest {
// compute a data slice
final PointerAnalysis<InstanceKey> pointerAnalysis = builder.getPointerAnalysis();
Collection<Statement> slice = Slicer.computeBackwardSlice(s, cg, pointerAnalysis, InstanceKey.class, DataDependenceOptions.FULL,
Collection<Statement> slice = Slicer.computeBackwardSlice(s, cg, pointerAnalysis, DataDependenceOptions.FULL,
ControlDependenceOptions.NONE);
dumpSlice(slice);
Assert.assertEquals(slice.toString(), 3, countAllocations(slice));
@ -691,7 +691,7 @@ public class SlicerTest {
// compute full slice
final PointerAnalysis<InstanceKey> pointerAnalysis = builder.getPointerAnalysis();
Collection<Statement> slice = Slicer.computeBackwardSlice(s, pcg, pointerAnalysis, InstanceKey.class,
Collection<Statement> slice = Slicer.computeBackwardSlice(s, pcg, pointerAnalysis,
DataDependenceOptions.FULL, ControlDependenceOptions.FULL);
dumpSlice(slice);
Assert.assertEquals(slice.toString(), 0, countAllocations(slice));
@ -733,7 +733,7 @@ public class SlicerTest {
System.err.println("Statement: " + s);
final PointerAnalysis<InstanceKey> pointerAnalysis = builder.getPointerAnalysis();
Collection<Statement> slice = Slicer.computeBackwardSlice(s, pcg, pointerAnalysis, InstanceKey.class,
Collection<Statement> slice = Slicer.computeBackwardSlice(s, pcg, pointerAnalysis,
DataDependenceOptions.FULL, ControlDependenceOptions.NONE);
dumpSlice(slice);
Assert.assertEquals(slice.toString(), 1, countAllocations(slice));
@ -757,7 +757,7 @@ public class SlicerTest {
System.err.println("Statement: " + s);
// compute a data slice
final PointerAnalysis<InstanceKey> pointerAnalysis = builder.getPointerAnalysis();
Collection<Statement> slice = Slicer.computeBackwardSlice(s, cg, pointerAnalysis, InstanceKey.class, DataDependenceOptions.FULL,
Collection<Statement> slice = Slicer.computeBackwardSlice(s, cg, pointerAnalysis, DataDependenceOptions.FULL,
ControlDependenceOptions.NONE);
dumpSlice(slice);
Assert.assertEquals(slice.toString(), 1, countApplicationAllocations(slice));
@ -802,7 +802,7 @@ public class SlicerTest {
CallGraphBuilder builder = Util.makeZeroOneCFABuilder(options, new AnalysisCacheImpl(), cha, scope);
CallGraph cg = builder.makeCallGraph(options, null);
SDG<?> sdg = new SDG<>(cg, builder.getPointerAnalysis(), InstanceKey.class, DataDependenceOptions.NO_BASE_NO_HEAP, ControlDependenceOptions.FULL);
SDG<?> sdg = new SDG<>(cg, builder.getPointerAnalysis(), DataDependenceOptions.NO_BASE_NO_HEAP, ControlDependenceOptions.FULL);
GraphIntegrity.check(sdg);
}
@ -824,7 +824,7 @@ public class SlicerTest {
System.err.println("Statement: " + s);
final PointerAnalysis<InstanceKey> pointerAnalysis = builder.getPointerAnalysis();
Collection<Statement> slice = Slicer.computeBackwardSlice(s, cg, pointerAnalysis, InstanceKey.class, DataDependenceOptions.FULL,
Collection<Statement> slice = Slicer.computeBackwardSlice(s, cg, pointerAnalysis, DataDependenceOptions.FULL,
ControlDependenceOptions.NO_EXCEPTIONAL_EDGES);
dumpSlice(slice);
}

View File

@ -131,7 +131,7 @@ public class PDFSDG {
CallGraphBuilder<InstanceKey> builder = Util.makeZeroOneCFABuilder(options, new AnalysisCacheImpl(), cha, scope);
CallGraph cg = builder.makeCallGraph(options,null);
final PointerAnalysis<InstanceKey> pointerAnalysis = builder.getPointerAnalysis();
SDG<?> sdg = new SDG<>(cg, pointerAnalysis, InstanceKey.class, dOptions, cOptions);
SDG<?> sdg = new SDG<>(cg, pointerAnalysis, dOptions, cOptions);
try {
GraphIntegrity.check(sdg);
} catch (UnsoundGraphException e1) {

View File

@ -159,7 +159,7 @@ public class PDFSlice {
// CallGraphBuilder builder = Util.makeZeroOneCFABuilder(options, new
// AnalysisCache(), cha, scope);
CallGraph cg = builder.makeCallGraph(options, null);
SDG<InstanceKey> sdg = new SDG<>(cg, builder.getPointerAnalysis(), InstanceKey.class, dOptions, cOptions);
SDG<InstanceKey> sdg = new SDG<>(cg, builder.getPointerAnalysis(), dOptions, cOptions);
// find the call statement of interest
CGNode callerNode = SlicerTest.findMethod(cg, srcCaller);
@ -170,13 +170,13 @@ public class PDFSlice {
Collection<Statement> slice = null;
if (goBackward) {
final PointerAnalysis<InstanceKey> pointerAnalysis = builder.getPointerAnalysis();
slice = Slicer.computeBackwardSlice(s, cg, pointerAnalysis, InstanceKey.class, dOptions, cOptions);
slice = Slicer.computeBackwardSlice(s, cg, pointerAnalysis, dOptions, cOptions);
} else {
// for forward slices ... we actually slice from the return value of
// calls.
s = getReturnStatementForCall(s);
final PointerAnalysis<InstanceKey> pointerAnalysis = builder.getPointerAnalysis();
slice = Slicer.computeForwardSlice(s, cg, pointerAnalysis, InstanceKey.class, dOptions, cOptions);
slice = Slicer.computeForwardSlice(s, cg, pointerAnalysis, dOptions, cOptions);
}
SlicerTest.dumpSlice(slice);

View File

@ -271,8 +271,8 @@ public abstract class AbstractAnalysisEngine<I extends InstanceKey> implements A
return heapGraph;
}
public SDG<I> getSDG(Class<I> instanceKeyClass, DataDependenceOptions data, ControlDependenceOptions ctrl) {
return new SDG<I>(getCallGraph(), getPointerAnalysis(), instanceKeyClass, data, ctrl);
public SDG<I> getSDG(DataDependenceOptions data, ControlDependenceOptions ctrl) {
return new SDG<I>(getCallGraph(), getPointerAnalysis(), data, ctrl);
}
public String getExclusionsFile() {

View File

@ -52,11 +52,11 @@ public class PABasedMemoryAccessMap implements MemoryAccessMap {
private final Map<PointerKey, Set<Statement>> invRef;
public PABasedMemoryAccessMap(CallGraph cg, PointerAnalysis<InstanceKey> pa) {
this(cg, pa, new SDG<InstanceKey>(cg, pa, InstanceKey.class, DataDependenceOptions.NO_BASE_NO_HEAP_NO_EXCEPTIONS, ControlDependenceOptions.NONE));
this(cg, pa, new SDG<InstanceKey>(cg, pa, DataDependenceOptions.NO_BASE_NO_HEAP_NO_EXCEPTIONS, ControlDependenceOptions.NONE));
}
public PABasedMemoryAccessMap(CallGraph cg, PointerAnalysis<InstanceKey> pa, SDG<InstanceKey> sdg) {
this(cg, pa, CISlicer.scanForMod(sdg, pa, true, ModRef.make(InstanceKey.class)), CISlicer.scanForRef(sdg, pa));
this(cg, pa, CISlicer.scanForMod(sdg, pa, true, ModRef.make()), CISlicer.scanForRef(sdg, pa));
}
public PABasedMemoryAccessMap(CallGraph cg, PointerAnalysis<InstanceKey> pa, Map<Statement, Set<PointerKey>> mod,

View File

@ -62,7 +62,7 @@ public class ReflectionHandler {
if (VERBOSE) {
System.err.println("Slice " + st);
}
Collection<Statement> slice = Slicer.computeForwardSlice(st, builder.callGraph, null, null, DataDependenceOptions.REFLECTION, ControlDependenceOptions.NONE);
Collection<Statement> slice = Slicer.computeForwardSlice(st, builder.callGraph, null, DataDependenceOptions.REFLECTION, ControlDependenceOptions.NONE);
if (VERBOSE) {
for (Statement x : slice) {
System.err.println(" " + x);

View File

@ -44,7 +44,7 @@ import com.ibm.wala.util.intset.OrdinalSet;
*/
public class ModRef<T extends InstanceKey> {
public static <U extends InstanceKey> ModRef<U> make(Class<U> klass) {
public static <U extends InstanceKey> ModRef<U> make() {
return new ModRef<U>();
}

View File

@ -122,8 +122,8 @@ public class SDG<T extends InstanceKey> extends AbstractNumberedGraph<Statement>
*/
private boolean eagerComputed = false;
public SDG(final CallGraph cg, PointerAnalysis<T> pa, Class<T> instanceKeyClass, DataDependenceOptions dOptions, ControlDependenceOptions cOptions) {
this(cg, pa, ModRef.make(instanceKeyClass), dOptions, cOptions, null);
public SDG(final CallGraph cg, PointerAnalysis<T> pa, DataDependenceOptions dOptions, ControlDependenceOptions cOptions) {
this(cg, pa, ModRef.<T>make(), dOptions, cOptions, null);
}
public SDG(final CallGraph cg, PointerAnalysis<T> pa, ModRef<T> modRef, DataDependenceOptions dOptions,

View File

@ -131,8 +131,8 @@ public class Slicer {
* @throws CancelException
*/
public static <U extends InstanceKey> Collection<Statement> computeBackwardSlice(Statement s, CallGraph cg, PointerAnalysis<U> pa,
Class<U> instanceKeyClass, DataDependenceOptions dOptions, ControlDependenceOptions cOptions) throws IllegalArgumentException, CancelException {
return computeSlice(new SDG<U>(cg, pa, ModRef.make(instanceKeyClass), dOptions, cOptions), Collections.singleton(s), true);
DataDependenceOptions dOptions, ControlDependenceOptions cOptions) throws IllegalArgumentException, CancelException {
return computeSlice(new SDG<U>(cg, pa, ModRef.<U>make(), dOptions, cOptions), Collections.singleton(s), true);
}
/**
@ -141,9 +141,9 @@ public class Slicer {
* @throws CancelException
*/
public static <U extends InstanceKey> Collection<Statement> computeForwardSlice(Statement s, CallGraph cg,
PointerAnalysis<U> pa, Class<U> instanceKeyClass,
PointerAnalysis<U> pa,
DataDependenceOptions dOptions, ControlDependenceOptions cOptions) throws IllegalArgumentException, CancelException {
return computeSlice(new SDG<U>(cg, pa, ModRef.make(instanceKeyClass), dOptions, cOptions), Collections.singleton(s), false);
return computeSlice(new SDG<U>(cg, pa, ModRef.<U>make(), dOptions, cOptions), Collections.singleton(s), false);
}
/**
@ -229,7 +229,7 @@ public class Slicer {
*/
public static Collection<Statement> computeBackwardSlice(Statement s, CallGraph cg, PointerAnalysis<InstanceKey> pointerAnalysis)
throws IllegalArgumentException, CancelException {
return computeBackwardSlice(s, cg, pointerAnalysis, InstanceKey.class, DataDependenceOptions.FULL, ControlDependenceOptions.FULL);
return computeBackwardSlice(s, cg, pointerAnalysis, DataDependenceOptions.FULL, ControlDependenceOptions.FULL);
}
/**

View File

@ -53,7 +53,7 @@ public class CISlicer {
private final Graph<Statement> depGraph;
public CISlicer(CallGraph cg, PointerAnalysis<InstanceKey> pa, DataDependenceOptions dOptions, ControlDependenceOptions cOptions) {
this(cg, pa, ModRef.make(InstanceKey.class), dOptions, cOptions);
this(cg, pa, ModRef.make(), dOptions, cOptions);
}
public CISlicer(CallGraph cg, PointerAnalysis<InstanceKey> pa, ModRef<InstanceKey> modRef, DataDependenceOptions dOptions, ControlDependenceOptions cOptions)
@ -95,7 +95,7 @@ public class CISlicer {
* Compute the set of pointer keys each statement mods
*/
public static Map<Statement, Set<PointerKey>> scanForMod(SDG<InstanceKey> sdg, PointerAnalysis<InstanceKey> pa) {
return scanForMod(sdg, pa, false, ModRef.make(InstanceKey.class));
return scanForMod(sdg, pa, false, ModRef.make());
}
/**
@ -105,7 +105,7 @@ public class CISlicer {
if (sdg == null) {
throw new IllegalArgumentException("null sdg");
}
return scanForRef(sdg, pa, ModRef.make(InstanceKey.class));
return scanForRef(sdg, pa, ModRef.make());
}
/**

View File

@ -31,7 +31,7 @@ import com.ibm.wala.ipa.slicer.Slicer.DataDependenceOptions;
public class ThinSlicer extends CISlicer {
public ThinSlicer(CallGraph cg, PointerAnalysis<InstanceKey> pa) {
this(cg, pa, ModRef.make(InstanceKey.class));
this(cg, pa, ModRef.make());
}
public ThinSlicer(CallGraph cg, PointerAnalysis<InstanceKey> pa, ModRef<InstanceKey> modRef) {

View File

@ -109,7 +109,7 @@ public class APKCallGraphDriver {
CG = DalvikCallGraphTestBase.makeAPKCallGraph(libs(), null, apk.getAbsolutePath(), pm, ReflectionOptions.NONE);
System.err.println("Analyzed " + apk + " in " + (System.currentTimeMillis() - time));
System.err.println(new SDG<>(CG.fst, CG.snd, InstanceKey.class, DataDependenceOptions.NO_BASE_NO_HEAP_NO_EXCEPTIONS, ControlDependenceOptions.NONE));
System.err.println(new SDG<>(CG.fst, CG.snd, DataDependenceOptions.NO_BASE_NO_HEAP_NO_EXCEPTIONS, ControlDependenceOptions.NONE));
if (dumpIR) {
for(CGNode n : CG.fst) {