diff --git a/com.ibm.wala.core.tests/src/com/ibm/wala/core/tests/callGraph/PiNodeCallGraphTest.java b/com.ibm.wala.core.tests/src/com/ibm/wala/core/tests/callGraph/PiNodeCallGraphTest.java index 375aa78e6..1a3cb1256 100644 --- a/com.ibm.wala.core.tests/src/com/ibm/wala/core/tests/callGraph/PiNodeCallGraphTest.java +++ b/com.ibm.wala.core.tests/src/com/ibm/wala/core/tests/callGraph/PiNodeCallGraphTest.java @@ -26,6 +26,8 @@ import com.ibm.wala.ipa.callgraph.CallGraph; import com.ibm.wala.ipa.callgraph.Entrypoint; import com.ibm.wala.ipa.cha.ClassHierarchy; import com.ibm.wala.ipa.cha.ClassHierarchyException; +import com.ibm.wala.ssa.SSAOptions; +import com.ibm.wala.ssa.SSAPiNodePolicy; import com.ibm.wala.types.ClassLoaderReference; import com.ibm.wala.types.Descriptor; import com.ibm.wala.types.MemberReference; @@ -76,20 +78,21 @@ public class PiNodeCallGraphTest extends WalaTestCase { Iterable entrypoints = com.ibm.wala.ipa.callgraph.impl.Util.makeMainEntrypoints(scope, cha, TestConstants.PI_TEST_MAIN); AnalysisOptions options = CallGraphTestUtil.makeAnalysisOptions(scope, entrypoints); - options.getSSAOptions().setUsePiNodes(usePiNodes); + SSAPiNodePolicy policy = usePiNodes ? SSAOptions.getAllBuiltInPiNodes() : null; + options.getSSAOptions().setPiNodePolicy(policy); return CallGraphTestUtil.buildZeroCFA(options, new AnalysisCache(), cha, scope, false); } private void checkCallAssertions(CallGraph cg, int desiredNumberOfTargets, int desiredNumberOfCalls) { + int numberOfCalls = 0; Set callerNodes = HashSetFactory.make(); callerNodes.addAll(cg.getNodes(thisBinaryRef)); callerNodes.addAll(cg.getNodes(thatBinaryRef)); Assertions._assert(callerNodes.size() == 2); - for (Iterator nodes = callerNodes.iterator(); nodes.hasNext();) { - CGNode n = (CGNode) nodes.next(); + for (CGNode n : callerNodes) { for (Iterator sites = n.iterateCallSites(); sites.hasNext();) { CallSiteReference csRef = (CallSiteReference) sites.next(); if (csRef.getDeclaredTarget().equals(unary2Ref)) { diff --git a/com.ibm.wala.core.tests/src/com/ibm/wala/core/tests/ir/CFGTest.java b/com.ibm.wala.core.tests/src/com/ibm/wala/core/tests/ir/CFGTest.java index d549e4058..7d0e61f50 100644 --- a/com.ibm.wala.core.tests/src/com/ibm/wala/core/tests/ir/CFGTest.java +++ b/com.ibm.wala.core.tests/src/com/ibm/wala/core/tests/ir/CFGTest.java @@ -21,6 +21,7 @@ import com.ibm.wala.ipa.callgraph.impl.Everywhere; import com.ibm.wala.ipa.cha.ClassHierarchy; import com.ibm.wala.ssa.IR; import com.ibm.wala.ssa.ISSABasicBlock; +import com.ibm.wala.ssa.SSAOptions; import com.ibm.wala.types.MethodReference; import com.ibm.wala.util.StringStuff; import com.ibm.wala.util.config.AnalysisScopeReader; @@ -56,7 +57,7 @@ public class CFGTest extends WalaTestCase { } AnalysisOptions options = new AnalysisOptions(); AnalysisCache cache = new AnalysisCache(); - options.getSSAOptions().setUsePiNodes(true); + options.getSSAOptions().setPiNodePolicy(SSAOptions.getAllBuiltInPiNodes()); IR ir = cache.getSSACache().findOrCreateIR(m, Everywhere.EVERYWHERE, options.getSSAOptions()); ControlFlowGraph cfg = ir.getControlFlowGraph(); diff --git a/com.ibm.wala.core.tests/src/com/ibm/wala/core/tests/ir/LocalNamesTest.java b/com.ibm.wala.core.tests/src/com/ibm/wala/core/tests/ir/LocalNamesTest.java index bc045553e..3ef8fb3f1 100644 --- a/com.ibm.wala.core.tests/src/com/ibm/wala/core/tests/ir/LocalNamesTest.java +++ b/com.ibm.wala.core.tests/src/com/ibm/wala/core/tests/ir/LocalNamesTest.java @@ -24,6 +24,8 @@ import com.ibm.wala.ipa.cha.ClassHierarchy; import com.ibm.wala.ipa.cha.ClassHierarchyException; import com.ibm.wala.ssa.IR; import com.ibm.wala.ssa.SSAInstruction; +import com.ibm.wala.ssa.SSAOptions; +import com.ibm.wala.ssa.SSAPiNodePolicy; import com.ibm.wala.types.Descriptor; import com.ibm.wala.types.MethodReference; import com.ibm.wala.types.Selector; @@ -100,7 +102,7 @@ public class LocalNamesTest extends WalaTestCase { .findOrCreateUTF8("([Ljava/lang/String;)V"))); AnalysisOptions options = new AnalysisOptions(); - options.getSSAOptions().setUsePiNodes(true); + options.getSSAOptions().setPiNodePolicy(SSAOptions.getAllBuiltInPiNodes()); IR ir = cache.getSSACache().findOrCreateIR(m, Everywhere.EVERYWHERE, options.getSSAOptions()); for (int offsetIndex = 0; offsetIndex < ir.getInstructions().length; offsetIndex++) { @@ -121,15 +123,15 @@ public class LocalNamesTest extends WalaTestCase { } public void testLocalNamesWithoutPiNodes() { - boolean save = options.getSSAOptions().getUsePiNodes(); - options.getSSAOptions().setUsePiNodes(false); + SSAPiNodePolicy save = options.getSSAOptions().getPiNodePolicy(); + options.getSSAOptions().setPiNodePolicy(null); MethodReference mref = scope.findMethod(AnalysisScope.APPLICATION, "LcornerCases/Locals", Atom.findOrCreateUnicodeAtom("foo"), new ImmutableByteArray(UTF8Convert.toUTF8("([Ljava/lang/String;)V"))); assertNotNull("method not found", mref); IMethod imethod = cha.resolveMethod(mref); assertNotNull("imethod not found", imethod); IR ir = cache.getIRFactory().makeIR(imethod, Everywhere.EVERYWHERE, options.getSSAOptions()); - options.getSSAOptions().setUsePiNodes(save); + options.getSSAOptions().setPiNodePolicy(save); // v1 should be the parameter "a" at pc 0 String[] names = ir.getLocalNames(0, 1); @@ -149,15 +151,15 @@ public class LocalNamesTest extends WalaTestCase { } public void testLocalNamesWithPiNodes() { - boolean save = options.getSSAOptions().getUsePiNodes(); - options.getSSAOptions().setUsePiNodes(true); + SSAPiNodePolicy save = options.getSSAOptions().getPiNodePolicy(); + options.getSSAOptions().setPiNodePolicy(SSAOptions.getAllBuiltInPiNodes()); MethodReference mref = scope.findMethod(AnalysisScope.APPLICATION, "LcornerCases/Locals", Atom.findOrCreateUnicodeAtom("foo"), new ImmutableByteArray(UTF8Convert.toUTF8("([Ljava/lang/String;)V"))); assertNotNull("method not found", mref); IMethod imethod = cha.resolveMethod(mref); assertNotNull("imethod not found", imethod); IR ir = cache.getIRFactory().makeIR(imethod, Everywhere.EVERYWHERE, options.getSSAOptions()); - options.getSSAOptions().setUsePiNodes(save); + options.getSSAOptions().setPiNodePolicy(save); // v1 should be the parameter "a" at pc 0 String[] names = ir.getLocalNames(0, 1); diff --git a/com.ibm.wala.core.tests/src/com/ibm/wala/examples/drivers/GVControlDependenceGraph.java b/com.ibm.wala.core.tests/src/com/ibm/wala/examples/drivers/GVControlDependenceGraph.java index 8d0975406..767342304 100644 --- a/com.ibm.wala.core.tests/src/com/ibm/wala/examples/drivers/GVControlDependenceGraph.java +++ b/com.ibm.wala.core.tests/src/com/ibm/wala/examples/drivers/GVControlDependenceGraph.java @@ -27,6 +27,7 @@ import com.ibm.wala.ipa.cha.ClassHierarchy; import com.ibm.wala.properties.WalaProperties; import com.ibm.wala.ssa.IR; import com.ibm.wala.ssa.ISSABasicBlock; +import com.ibm.wala.ssa.SSAOptions; import com.ibm.wala.types.MethodReference; import com.ibm.wala.util.StringStuff; import com.ibm.wala.util.debug.Assertions; @@ -84,7 +85,6 @@ public class GVControlDependenceGraph { } AnalysisScope scope = AnalysisScopeReader.makeJavaBinaryAnalysisScope(appJar, new File(CallGraphTestUtil.REGRESSION_EXCLUSIONS)); - ClassHierarchy cha = ClassHierarchy.make(scope); MethodReference mr = StringStuff.makeMethodReference(methodSig); @@ -94,7 +94,7 @@ public class GVControlDependenceGraph { Assertions.UNREACHABLE("could not resolve " + mr); } AnalysisOptions options = new AnalysisOptions(); - options.getSSAOptions().setUsePiNodes(true); + options.getSSAOptions().setPiNodePolicy(SSAOptions.getAllBuiltInPiNodes()); AnalysisCache cache = new AnalysisCache(); IR ir = cache.getSSACache().findOrCreateIR(m, Everywhere.EVERYWHERE, options.getSSAOptions() ); diff --git a/com.ibm.wala.core.tests/src/com/ibm/wala/examples/drivers/GVWalaIR.java b/com.ibm.wala.core.tests/src/com/ibm/wala/examples/drivers/GVWalaIR.java index 3bed06ab9..d118aa52f 100644 --- a/com.ibm.wala.core.tests/src/com/ibm/wala/examples/drivers/GVWalaIR.java +++ b/com.ibm.wala.core.tests/src/com/ibm/wala/examples/drivers/GVWalaIR.java @@ -27,6 +27,7 @@ import com.ibm.wala.ipa.callgraph.impl.Everywhere; import com.ibm.wala.ipa.cha.ClassHierarchy; import com.ibm.wala.properties.WalaProperties; import com.ibm.wala.ssa.IR; +import com.ibm.wala.ssa.SSAOptions; import com.ibm.wala.types.MethodReference; import com.ibm.wala.util.StringStuff; import com.ibm.wala.util.debug.Assertions; @@ -92,7 +93,7 @@ public class GVWalaIR { Assertions.UNREACHABLE("could not resolve " + mr); } AnalysisOptions options = new AnalysisOptions(); - options.getSSAOptions().setUsePiNodes(true); + options.getSSAOptions().setPiNodePolicy(SSAOptions.getAllBuiltInPiNodes()); AnalysisCache cache = new AnalysisCache(); IR ir = cache.getSSACache().findOrCreateIR(m, Everywhere.EVERYWHERE, options.getSSAOptions());