From 2c4fd1fc93e1c4ac34db96823b6c2fc665e5debb Mon Sep 17 00:00:00 2001 From: sjfink Date: Tue, 17 Jul 2007 13:41:34 +0000 Subject: [PATCH] add some assertions git-svn-id: https://wala.svn.sourceforge.net/svnroot/wala/trunk@1498 f5eafffb-2e1d-0410-98e4-8ec43c5233c4 --- .../wala/dataflow/graph/DataflowSolver.java | 29 ++++++++++++++----- 1 file changed, 21 insertions(+), 8 deletions(-) diff --git a/com.ibm.wala.core/src/com/ibm/wala/dataflow/graph/DataflowSolver.java b/com.ibm.wala.core/src/com/ibm/wala/dataflow/graph/DataflowSolver.java index f765f6b43..0de6a344a 100644 --- a/com.ibm.wala.core/src/com/ibm/wala/dataflow/graph/DataflowSolver.java +++ b/com.ibm.wala.core/src/com/ibm/wala/dataflow/graph/DataflowSolver.java @@ -23,8 +23,7 @@ import com.ibm.wala.util.graph.Graph; import com.ibm.wala.util.intset.IntegerUnionFind; /** - * - * Iterative solver for a killdall dataflow framework + * Iterative solver for a Killdall dataflow framework * * @author sfink */ @@ -63,7 +62,7 @@ public abstract class DataflowSolver extends DefaultFixedPointSolver { /** * @param n - * a node + * a node * @return a fresh variable to represent the lattice value at the IN or OUT of * n */ @@ -78,6 +77,7 @@ public abstract class DataflowSolver extends DefaultFixedPointSolver { // create a variable for each node. for (Iterator it = G.iterator(); it.hasNext();) { T N = it.next(); + assert N != null; IVariable v = makeNodeVariable(N, true); node2In.put(N, v); @@ -90,7 +90,7 @@ public abstract class DataflowSolver extends DefaultFixedPointSolver { for (Iterator it2 = G.getSuccNodes(N); it2.hasNext();) { T S = it2.next(); v = makeEdgeVariable(N, S); - edge2Var.put(new Pair(N, S), v); + edge2Var.put(new Pair(N, S), v); } } } @@ -102,7 +102,10 @@ public abstract class DataflowSolver extends DefaultFixedPointSolver { } public IVariable getOut(Object node) { - return node2Out.get(node); + assert node != null; + IVariable v = node2Out.get(node); + assert v != null; + return v; } public IVariable getIn(Object node) { @@ -114,7 +117,11 @@ public abstract class DataflowSolver extends DefaultFixedPointSolver { } public IVariable getEdge(Object src, Object dst) { - return getEdge(new Pair(src, dst)); + assert src != null; + assert dst != null; + IVariable v = getEdge(new Pair(src, dst)); + assert v != null; + return v; } private class UnionFind { @@ -153,6 +160,8 @@ public abstract class DataflowSolver extends DefaultFixedPointSolver { * (x,true) = IN(X) and (x,false) = OUT(X) */ public void union(Object n1, Object n2) { + assert n1 != null; + assert n2 != null; int x = map.getMappedIndex(n1); int y = map.getMappedIndex(n2); uf.union(x, y); @@ -162,7 +171,7 @@ public abstract class DataflowSolver extends DefaultFixedPointSolver { public int size() { return map.getMappingSize(); } - + public int find(int i) { return uf.find(i); } @@ -305,16 +314,20 @@ public abstract class DataflowSolver extends DefaultFixedPointSolver { private void shortCircuitUnaryMeets(Graph G, ITransferFunctionProvider functions, UnionFind uf) { for (Iterator it = G.iterator(); it.hasNext();) { T node = it.next(); + assert node != null; int nPred = G.getPredNodeCount(node); if (nPred == 1) { // short circuit by setting IN = OUT_p Object p = G.getPredNodes(node).next(); +// if (p == null) { +// p = G.getPredNodes(node).next(); +// } + assert p != null; uf.union(getIn(node), functions.hasEdgeTransferFunctions() ? getEdge(p, node) : getOut(p)); } } } - public IKilldallFramework getProblem() { return problem; }