diff --git a/com.ibm.wala.core/src/com/ibm/wala/ipa/slicer/HeapStatement.java b/com.ibm.wala.core/src/com/ibm/wala/ipa/slicer/HeapStatement.java index 6ad47a5ec..3a535eeb4 100644 --- a/com.ibm.wala.core/src/com/ibm/wala/ipa/slicer/HeapStatement.java +++ b/com.ibm.wala.core/src/com/ibm/wala/ipa/slicer/HeapStatement.java @@ -12,7 +12,7 @@ package com.ibm.wala.ipa.slicer; import com.ibm.wala.ipa.callgraph.CGNode; import com.ibm.wala.ipa.callgraph.propagation.PointerKey; -import com.ibm.wala.ssa.SSAInvokeInstruction; +import com.ibm.wala.ssa.SSAAbstractInvokeInstruction; public abstract class HeapStatement extends Statement { @@ -26,9 +26,9 @@ public abstract class HeapStatement extends Statement { public final static class ParamCaller extends HeapStatement { - private final SSAInvokeInstruction call; + private final SSAAbstractInvokeInstruction call; - public ParamCaller(CGNode node, SSAInvokeInstruction call, PointerKey loc) { + public ParamCaller(CGNode node, SSAAbstractInvokeInstruction call, PointerKey loc) { super(node, loc); this.call = call; } @@ -38,7 +38,7 @@ public abstract class HeapStatement extends Statement { return Kind.HEAP_PARAM_CALLER; } - public SSAInvokeInstruction getCall() { + public SSAAbstractInvokeInstruction getCall() { return call; } @@ -97,9 +97,9 @@ public abstract class HeapStatement extends Statement { } public final static class ReturnCaller extends HeapStatement { - private final SSAInvokeInstruction call; + private final SSAAbstractInvokeInstruction call; - public ReturnCaller(CGNode node, SSAInvokeInstruction call, PointerKey loc) { + public ReturnCaller(CGNode node, SSAAbstractInvokeInstruction call, PointerKey loc) { super(node, loc); this.call = call; } @@ -109,7 +109,7 @@ public abstract class HeapStatement extends Statement { return Kind.HEAP_RET_CALLER; } - public SSAInvokeInstruction getCall() { + public SSAAbstractInvokeInstruction getCall() { return call; } diff --git a/com.ibm.wala.core/src/com/ibm/wala/ipa/slicer/PDG.java b/com.ibm.wala.core/src/com/ibm/wala/ipa/slicer/PDG.java index 4f9f021a3..7a2ec1ef8 100644 --- a/com.ibm.wala.core/src/com/ibm/wala/ipa/slicer/PDG.java +++ b/com.ibm.wala.core/src/com/ibm/wala/ipa/slicer/PDG.java @@ -40,7 +40,7 @@ import com.ibm.wala.ssa.SSAFieldAccessInstruction; import com.ibm.wala.ssa.SSAGetCaughtExceptionInstruction; import com.ibm.wala.ssa.SSAInstanceofInstruction; import com.ibm.wala.ssa.SSAInstruction; -import com.ibm.wala.ssa.SSAInvokeInstruction; +import com.ibm.wala.ssa.SSAAbstractInvokeInstruction; import com.ibm.wala.ssa.SSANewInstruction; import com.ibm.wala.ssa.SSAPhiInstruction; import com.ibm.wala.ssa.SSAPiInstruction; @@ -78,9 +78,9 @@ public class PDG extends SlowSparseNumberedGraph { private Statement[] returnStatements; - private final Map> callerParamStatements = HashMapFactory.make(); + private final Map> callerParamStatements = HashMapFactory.make(); - private final Map> callerReturnStatements = HashMapFactory.make(); + private final Map> callerReturnStatements = HashMapFactory.make(); private final HeapExclusions exclusions; @@ -122,11 +122,11 @@ public class PDG extends SlowSparseNumberedGraph { createControlDependenceEdges(cOptions); } - public Set getCallerParamStatements(SSAInvokeInstruction call) { + public Set getCallerParamStatements(SSAAbstractInvokeInstruction call) { return callerParamStatements.get(call); } - public Set getCallerReturnStatements(SSAInvokeInstruction call) { + public Set getCallerReturnStatements(SSAAbstractInvokeInstruction call) { return callerReturnStatements.get(call); } @@ -161,7 +161,7 @@ public class PDG extends SlowSparseNumberedGraph { } else { src = ssaInstruction2Statement(s); // add edges from call statements to parameter passing and return - if (s instanceof SSAInvokeInstruction) { + if (s instanceof SSAAbstractInvokeInstruction) { for (Statement st : callerParamStatements.get(s)) { addEdge(src, st); } @@ -237,7 +237,7 @@ public class PDG extends SlowSparseNumberedGraph { SSAInstruction statement = statement2SSAInstruction(instructions, s); // note that data dependencies from invoke instructions will pass // interprocedurally - if (!(statement instanceof SSAInvokeInstruction)) { + if (!(statement instanceof SSAAbstractInvokeInstruction)) { if (dOptions.isTerminateAtCast() && (statement instanceof SSACheckCastInstruction)) { break; } @@ -325,8 +325,8 @@ public class PDG extends SlowSparseNumberedGraph { if (dOptions.isTerminateAtCast() && (pei.getInstruction() instanceof SSACheckCastInstruction)) { continue; } - if (pei.getInstruction() instanceof SSAInvokeInstruction) { - SSAInvokeInstruction call = (SSAInvokeInstruction) pei.getInstruction(); + if (pei.getInstruction() instanceof SSAAbstractInvokeInstruction) { + SSAAbstractInvokeInstruction call = (SSAAbstractInvokeInstruction) pei.getInstruction(); Statement st = new ParamStatement.ExceptionalReturnCaller(node, call); addEdge(st, s); } else { @@ -349,8 +349,8 @@ public class PDG extends SlowSparseNumberedGraph { break; } if (d != null) { - if (d instanceof SSAInvokeInstruction) { - SSAInvokeInstruction call = (SSAInvokeInstruction) d; + if (d instanceof SSAAbstractInvokeInstruction) { + SSAAbstractInvokeInstruction call = (SSAAbstractInvokeInstruction) d; if (vn == call.getException()) { Statement st = new ParamStatement.ExceptionalReturnCaller(node, call); addEdge(st, pac); @@ -784,8 +784,8 @@ public class PDG extends SlowSparseNumberedGraph { addNode(new NormalStatement(node, i)); visited.add(s); } - if (s instanceof SSAInvokeInstruction) { - addParamPassingStatements((SSAInvokeInstruction) s, mod, ref, dOptions); + if (s instanceof SSAAbstractInvokeInstruction) { + addParamPassingStatements((SSAAbstractInvokeInstruction) s, mod, ref, dOptions); } } return visited; @@ -797,7 +797,7 @@ public class PDG extends SlowSparseNumberedGraph { * * @param dOptions */ - private void addParamPassingStatements(SSAInvokeInstruction call, Map> mod, + private void addParamPassingStatements(SSAAbstractInvokeInstruction call, Map> mod, Map> ref, DataDependenceOptions dOptions) { Collection params = MapUtil.findOrCreateSet(callerParamStatements, call); @@ -839,7 +839,7 @@ public class PDG extends SlowSparseNumberedGraph { /** * @return the set of all locations read by any callee at a call site. */ - private OrdinalSet unionHeapLocations(CGNode n, SSAInvokeInstruction call, Map> loc) { + private OrdinalSet unionHeapLocations(CGNode n, SSAAbstractInvokeInstruction call, Map> loc) { BitVectorIntSet bv = new BitVectorIntSet(); for (CGNode t : n.getPossibleTargets(call.getCallSite())) { bv.addAll(loc.get(t).getBackingSet()); diff --git a/com.ibm.wala.core/src/com/ibm/wala/ipa/slicer/ParamStatement.java b/com.ibm.wala.core/src/com/ibm/wala/ipa/slicer/ParamStatement.java index 7316a986d..002b26a61 100644 --- a/com.ibm.wala.core/src/com/ibm/wala/ipa/slicer/ParamStatement.java +++ b/com.ibm.wala.core/src/com/ibm/wala/ipa/slicer/ParamStatement.java @@ -11,7 +11,7 @@ package com.ibm.wala.ipa.slicer; import com.ibm.wala.ipa.callgraph.CGNode; -import com.ibm.wala.ssa.SSAInvokeInstruction; +import com.ibm.wala.ssa.SSAAbstractInvokeInstruction; /** * Represents parameter-passing statement in the SDG @@ -30,15 +30,15 @@ public abstract class ParamStatement extends Statement { } public interface CallStatementCarrier { - public SSAInvokeInstruction getCall(); + public SSAAbstractInvokeInstruction getCall(); } public static class ParamCaller extends ParamStatement implements ValueNumberCarrier, CallStatementCarrier { - private final SSAInvokeInstruction call; + private final SSAAbstractInvokeInstruction call; protected final int valueNumber; - public ParamCaller(CGNode node, SSAInvokeInstruction call, int valueNumber) { + public ParamCaller(CGNode node, SSAAbstractInvokeInstruction call, int valueNumber) { super(node); this.call = call; this.valueNumber = valueNumber; @@ -49,7 +49,7 @@ public abstract class ParamStatement extends Statement { return Kind.PARAM_CALLER; } - public SSAInvokeInstruction getCall() { + public SSAAbstractInvokeInstruction getCall() { return call; } @@ -118,11 +118,11 @@ public abstract class ParamStatement extends Statement { } public static class NormalReturnCaller extends ParamStatement implements ValueNumberCarrier, CallStatementCarrier { - private final SSAInvokeInstruction call; + private final SSAAbstractInvokeInstruction call; protected final int valueNumber; - public NormalReturnCaller(CGNode node, SSAInvokeInstruction call) { + public NormalReturnCaller(CGNode node, SSAAbstractInvokeInstruction call) { super(node); this.call = call; this.valueNumber = call.getDef(); @@ -133,7 +133,7 @@ public abstract class ParamStatement extends Statement { return Kind.NORMAL_RET_CALLER; } - public SSAInvokeInstruction getCall() { + public SSAAbstractInvokeInstruction getCall() { return call; } @@ -163,11 +163,11 @@ public abstract class ParamStatement extends Statement { } public static class ExceptionalReturnCaller extends ParamStatement implements ValueNumberCarrier, CallStatementCarrier { - private final SSAInvokeInstruction call; + private final SSAAbstractInvokeInstruction call; protected final int valueNumber; - public ExceptionalReturnCaller(CGNode node, SSAInvokeInstruction call) { + public ExceptionalReturnCaller(CGNode node, SSAAbstractInvokeInstruction call) { super(node); this.call = call; this.valueNumber = call.getException(); @@ -178,7 +178,7 @@ public abstract class ParamStatement extends Statement { return Kind.EXC_RET_CALLER; } - public SSAInvokeInstruction getCall() { + public SSAAbstractInvokeInstruction getCall() { return call; } diff --git a/com.ibm.wala.core/src/com/ibm/wala/ipa/slicer/SDG.java b/com.ibm.wala.core/src/com/ibm/wala/ipa/slicer/SDG.java index 765ca8963..f01472ee8 100644 --- a/com.ibm.wala.core/src/com/ibm/wala/ipa/slicer/SDG.java +++ b/com.ibm.wala.core/src/com/ibm/wala/ipa/slicer/SDG.java @@ -25,7 +25,7 @@ import com.ibm.wala.ipa.slicer.Slicer.ControlDependenceOptions; import com.ibm.wala.ipa.slicer.Slicer.DataDependenceOptions; import com.ibm.wala.ipa.slicer.Statement.Kind; import com.ibm.wala.ssa.IR; -import com.ibm.wala.ssa.SSAInvokeInstruction; +import com.ibm.wala.ssa.SSAAbstractInvokeInstruction; import com.ibm.wala.util.CompoundIterator; import com.ibm.wala.util.collections.HashMapFactory; import com.ibm.wala.util.collections.HashSetFactory; @@ -207,7 +207,7 @@ public class SDG extends AbstractNumberedGraph implements ISDG { return getPDG(N.getNode()).getPredNodes(N); case EXC_RET_CALLER: { ParamStatement.ExceptionalReturnCaller nrc = (ParamStatement.ExceptionalReturnCaller) N; - SSAInvokeInstruction call = nrc.getCall(); + SSAAbstractInvokeInstruction call = nrc.getCall(); Collection result = new Iterator2Collection(getPDG(N.getNode()).getPredNodes(N)); if (!dOptions.equals(DataDependenceOptions.NONE)) { // data dependence predecessors @@ -221,7 +221,7 @@ public class SDG extends AbstractNumberedGraph implements ISDG { } case NORMAL_RET_CALLER: { ParamStatement.NormalReturnCaller nrc = (ParamStatement.NormalReturnCaller) N; - SSAInvokeInstruction call = nrc.getCall(); + SSAAbstractInvokeInstruction call = nrc.getCall(); Collection result = new Iterator2Collection(getPDG(N.getNode()).getPredNodes(N)); if (!dOptions.equals(DataDependenceOptions.NONE)) { // data dependence predecessors @@ -235,7 +235,7 @@ public class SDG extends AbstractNumberedGraph implements ISDG { } case HEAP_RET_CALLER: { HeapStatement.ReturnCaller r = (HeapStatement.ReturnCaller) N; - SSAInvokeInstruction call = r.getCall(); + SSAAbstractInvokeInstruction call = r.getCall(); Collection result = new Iterator2Collection(getPDG(N.getNode()).getPredNodes(N)); if (!dOptions.equals(DataDependenceOptions.NONE)) { // data dependence predecessors @@ -263,7 +263,7 @@ public class SDG extends AbstractNumberedGraph implements ISDG { IntSet indices = ir.getCallInstructionIndices(site); for (IntIterator ii = indices.intIterator(); ii.hasNext();) { int i = ii.next(); - SSAInvokeInstruction call = (SSAInvokeInstruction) ir.getInstructions()[i]; + SSAAbstractInvokeInstruction call = (SSAAbstractInvokeInstruction) ir.getInstructions()[i]; int p = call.getUse(parameterIndex); Statement s = new ParamStatement.ParamCaller(caller, call, p); addNode(s); @@ -292,7 +292,7 @@ public class SDG extends AbstractNumberedGraph implements ISDG { IntSet indices = ir.getCallInstructionIndices(site); for (IntIterator ii = indices.intIterator(); ii.hasNext();) { int i = ii.next(); - SSAInvokeInstruction call = (SSAInvokeInstruction) ir.getInstructions()[i]; + SSAAbstractInvokeInstruction call = (SSAAbstractInvokeInstruction) ir.getInstructions()[i]; Statement s = new HeapStatement.ParamCaller(caller, call, hpc.getLocation()); addNode(s); result.add(s); @@ -319,7 +319,7 @@ public class SDG extends AbstractNumberedGraph implements ISDG { IntSet indices = ir.getCallInstructionIndices(site); for (IntIterator ii = indices.intIterator(); ii.hasNext();) { int i = ii.next(); - SSAInvokeInstruction call = (SSAInvokeInstruction) ir.getInstructions()[i]; + SSAAbstractInvokeInstruction call = (SSAAbstractInvokeInstruction) ir.getInstructions()[i]; Statement s = pdg.ssaInstruction2Statement(call); addNode(s); result.add(s); @@ -345,9 +345,9 @@ public class SDG extends AbstractNumberedGraph implements ISDG { return getPDG(N.getNode()).getSuccNodes(N); } else { NormalStatement ns = (NormalStatement) N; - if (ns.getInstruction() instanceof SSAInvokeInstruction) { + if (ns.getInstruction() instanceof SSAAbstractInvokeInstruction) { HashSet result = HashSetFactory.make(); - SSAInvokeInstruction call = (SSAInvokeInstruction) ns.getInstruction(); + SSAAbstractInvokeInstruction call = (SSAAbstractInvokeInstruction) ns.getInstruction(); for (CGNode t : N.getNode().getPossibleTargets(call.getCallSite())) { Statement s = new MethodEntryStatement(t); addNode(s); @@ -379,7 +379,7 @@ public class SDG extends AbstractNumberedGraph implements ISDG { IntSet indices = ir.getCallInstructionIndices(site); for (IntIterator ii = indices.intIterator(); ii.hasNext();) { int i = ii.next(); - SSAInvokeInstruction call = (SSAInvokeInstruction) ir.getInstructions()[i]; + SSAAbstractInvokeInstruction call = (SSAAbstractInvokeInstruction) ir.getInstructions()[i]; Statement s = new ParamStatement.ExceptionalReturnCaller(caller, call); addNode(s); result.add(s); @@ -401,7 +401,7 @@ public class SDG extends AbstractNumberedGraph implements ISDG { IntSet indices = ir.getCallInstructionIndices(site); for (IntIterator ii = indices.intIterator(); ii.hasNext();) { int i = ii.next(); - SSAInvokeInstruction call = (SSAInvokeInstruction) ir.getInstructions()[i]; + SSAAbstractInvokeInstruction call = (SSAAbstractInvokeInstruction) ir.getInstructions()[i]; Statement s = new ParamStatement.NormalReturnCaller(caller, call); addNode(s); result.add(s); @@ -424,7 +424,7 @@ public class SDG extends AbstractNumberedGraph implements ISDG { IntSet indices = ir.getCallInstructionIndices(site); for (IntIterator ii = indices.intIterator(); ii.hasNext();) { int i = ii.next(); - SSAInvokeInstruction call = (SSAInvokeInstruction) ir.getInstructions()[i]; + SSAAbstractInvokeInstruction call = (SSAAbstractInvokeInstruction) ir.getInstructions()[i]; Statement s = new HeapStatement.ReturnCaller(caller, call, r.getLocation()); addNode(s); result.add(s); @@ -436,7 +436,7 @@ public class SDG extends AbstractNumberedGraph implements ISDG { } case PARAM_CALLER: { ParamStatement.ParamCaller pac = (ParamStatement.ParamCaller) N; - SSAInvokeInstruction call = pac.getCall(); + SSAAbstractInvokeInstruction call = pac.getCall(); Collection result = HashSetFactory.make(5); if (!dOptions.equals(DataDependenceOptions.NONE)) { // data dependence successors @@ -454,7 +454,7 @@ public class SDG extends AbstractNumberedGraph implements ISDG { } case HEAP_PARAM_CALLER: HeapStatement.ParamCaller pc = (HeapStatement.ParamCaller) N; - SSAInvokeInstruction call = pc.getCall(); + SSAAbstractInvokeInstruction call = pc.getCall(); Collection result = HashSetFactory.make(5); if (!dOptions.equals(DataDependenceOptions.NONE)) { // data dependence successors @@ -481,8 +481,8 @@ public class SDG extends AbstractNumberedGraph implements ISDG { } else { NormalStatement ns = (NormalStatement) src; if (dst instanceof MethodEntryStatement) { - if (ns.getInstruction() instanceof SSAInvokeInstruction) { - SSAInvokeInstruction call = (SSAInvokeInstruction) ns.getInstruction(); + if (ns.getInstruction() instanceof SSAAbstractInvokeInstruction) { + SSAAbstractInvokeInstruction call = (SSAAbstractInvokeInstruction) ns.getInstruction(); return src.getNode().getPossibleTargets(call.getCallSite()).contains(dst.getNode()); } else { return false; diff --git a/com.ibm.wala.core/src/com/ibm/wala/ipa/slicer/SDGSupergraph.java b/com.ibm.wala.core/src/com/ibm/wala/ipa/slicer/SDGSupergraph.java index 019bdb20d..b88ac6a2e 100644 --- a/com.ibm.wala.core/src/com/ibm/wala/ipa/slicer/SDGSupergraph.java +++ b/com.ibm.wala.core/src/com/ibm/wala/ipa/slicer/SDGSupergraph.java @@ -17,7 +17,7 @@ import com.ibm.wala.ipa.callgraph.CGNode; import com.ibm.wala.ipa.slicer.ParamStatement.ExceptionalReturnCaller; import com.ibm.wala.ipa.slicer.ParamStatement.NormalReturnCaller; import com.ibm.wala.ipa.slicer.Slicer.ControlDependenceOptions; -import com.ibm.wala.ssa.SSAInvokeInstruction; +import com.ibm.wala.ssa.SSAAbstractInvokeInstruction; import com.ibm.wala.util.collections.EmptyIterator; import com.ibm.wala.util.collections.Filter; import com.ibm.wala.util.collections.FilterIterator; @@ -71,19 +71,19 @@ class SDGSupergraph implements ISupergraph { switch (r.getKind()) { case EXC_RET_CALLER: { ParamStatement.ExceptionalReturnCaller n = (ExceptionalReturnCaller) r; - SSAInvokeInstruction call = n.getCall(); + SSAAbstractInvokeInstruction call = n.getCall(); PDG pdg = getProcOf(r); return pdg.getCallerParamStatements(call).iterator(); } case NORMAL_RET_CALLER: { ParamStatement.NormalReturnCaller n = (NormalReturnCaller) r; - SSAInvokeInstruction call = n.getCall(); + SSAAbstractInvokeInstruction call = n.getCall(); PDG pdg = getProcOf(r); return pdg.getCallerParamStatements(call).iterator(); } case HEAP_RET_CALLER: { HeapStatement.ReturnCaller n = (HeapStatement.ReturnCaller) r; - SSAInvokeInstruction call = n.getCall(); + SSAAbstractInvokeInstruction call = n.getCall(); PDG pdg = getProcOf(r); return pdg.getCallerParamStatements(call).iterator(); } @@ -244,19 +244,19 @@ class SDGSupergraph implements ISupergraph { switch (call.getKind()) { case PARAM_CALLER: { ParamStatement.ParamCaller n = (ParamStatement.ParamCaller) call; - SSAInvokeInstruction st = n.getCall(); + SSAAbstractInvokeInstruction st = n.getCall(); PDG pdg = getProcOf(call); return pdg.getCallerReturnStatements(st).iterator(); } case HEAP_PARAM_CALLER: { HeapStatement.ParamCaller n = (HeapStatement.ParamCaller) call; - SSAInvokeInstruction st = n.getCall(); + SSAAbstractInvokeInstruction st = n.getCall(); PDG pdg = getProcOf(call); return pdg.getCallerReturnStatements(st).iterator(); } case NORMAL: { NormalStatement n = (NormalStatement) call; - SSAInvokeInstruction st = (SSAInvokeInstruction) n.getInstruction(); + SSAAbstractInvokeInstruction st = (SSAAbstractInvokeInstruction) n.getInstruction(); PDG pdg = getProcOf(call); return pdg.getCallerReturnStatements(st).iterator(); } @@ -291,7 +291,7 @@ class SDGSupergraph implements ISupergraph { return false; } else { NormalStatement s = (NormalStatement) n; - return s.getInstruction() instanceof SSAInvokeInstruction; + return s.getInstruction() instanceof SSAAbstractInvokeInstruction; } default: Assertions.UNREACHABLE(); @@ -501,4 +501,4 @@ class SDGSupergraph implements ISupergraph { } } -} \ No newline at end of file +}