lots of new generics for fixed point solver hierarchy

git-svn-id: https://wala.svn.sourceforge.net/svnroot/wala/trunk@1695 f5eafffb-2e1d-0410-98e4-8ec43c5233c4
This commit is contained in:
sjfink 2007-08-31 21:38:35 +00:00
parent eb91983f53
commit d606af773b
1 changed files with 11 additions and 12 deletions

View File

@ -18,7 +18,6 @@ import com.ibm.wala.dataflow.graph.BitVectorIdentity;
import com.ibm.wala.dataflow.graph.BitVectorSolver; import com.ibm.wala.dataflow.graph.BitVectorSolver;
import com.ibm.wala.dataflow.graph.BitVectorUnion; import com.ibm.wala.dataflow.graph.BitVectorUnion;
import com.ibm.wala.dataflow.graph.BitVectorUnionConstant; import com.ibm.wala.dataflow.graph.BitVectorUnionConstant;
import com.ibm.wala.dataflow.graph.DataflowSolver;
import com.ibm.wala.dataflow.graph.ITransferFunctionProvider; import com.ibm.wala.dataflow.graph.ITransferFunctionProvider;
import com.ibm.wala.fixedpoint.impl.UnaryOperator; import com.ibm.wala.fixedpoint.impl.UnaryOperator;
import com.ibm.wala.fixpoint.BitVectorVariable; import com.ibm.wala.fixpoint.BitVectorVariable;
@ -120,9 +119,9 @@ public class GraphDataflowTest extends WalaTestCase {
*/ */
private String solveNodeOnly(Graph<String> G) { private String solveNodeOnly(Graph<String> G) {
final OrdinalSetMapping<String> values = new MutableMapping<String>(nodes); final OrdinalSetMapping<String> values = new MutableMapping<String>(nodes);
ITransferFunctionProvider<String> functions = new ITransferFunctionProvider<String>() { ITransferFunctionProvider<String, BitVectorVariable> functions = new ITransferFunctionProvider<String, BitVectorVariable>() {
public UnaryOperator getNodeTransferFunction(String node) { public UnaryOperator<BitVectorVariable> getNodeTransferFunction(String node) {
return new BitVectorUnionConstant(values.getMappedIndex(node)); return new BitVectorUnionConstant(values.getMappedIndex(node));
} }
@ -130,7 +129,7 @@ public class GraphDataflowTest extends WalaTestCase {
return true; return true;
} }
public UnaryOperator getEdgeTransferFunction(String from, String to) { public UnaryOperator<BitVectorVariable> getEdgeTransferFunction(String from, String to) {
Assertions.UNREACHABLE(); Assertions.UNREACHABLE();
return null; return null;
} }
@ -139,23 +138,23 @@ public class GraphDataflowTest extends WalaTestCase {
return false; return false;
} }
public AbstractMeetOperator getMeetOperator() { public AbstractMeetOperator<BitVectorVariable> getMeetOperator() {
return BitVectorUnion.instance(); return BitVectorUnion.instance();
} }
}; };
BitVectorFramework<String,String> F = new BitVectorFramework<String,String>(G, functions, values); BitVectorFramework<String,String> F = new BitVectorFramework<String,String>(G, functions, values);
DataflowSolver<String> s = new BitVectorSolver<String>(F); BitVectorSolver<String> s = new BitVectorSolver<String>(F);
s.solve(); s.solve();
return result2String(s); return result2String(s);
} }
private String solveNodeEdge(Graph<String> G) { private String solveNodeEdge(Graph<String> G) {
final OrdinalSetMapping<String> values = new MutableMapping<String>(nodes); final OrdinalSetMapping<String> values = new MutableMapping<String>(nodes);
ITransferFunctionProvider<String> functions = new ITransferFunctionProvider<String>() { ITransferFunctionProvider<String, BitVectorVariable> functions = new ITransferFunctionProvider<String, BitVectorVariable>() {
public UnaryOperator getNodeTransferFunction(String node) { public UnaryOperator<BitVectorVariable> getNodeTransferFunction(String node) {
return new BitVectorUnionConstant(values.getMappedIndex(node)); return new BitVectorUnionConstant(values.getMappedIndex(node));
} }
@ -175,7 +174,7 @@ public class GraphDataflowTest extends WalaTestCase {
return b; return b;
} }
public UnaryOperator getEdgeTransferFunction(String from, String to) { public UnaryOperator<BitVectorVariable> getEdgeTransferFunction(String from, String to) {
if (from == nodes[1] && to == nodes[3]) if (from == nodes[1] && to == nodes[3])
return new BitVectorFilter(zero()); return new BitVectorFilter(zero());
else if (from == nodes[1] && to == nodes[2]) else if (from == nodes[1] && to == nodes[2])
@ -189,19 +188,19 @@ public class GraphDataflowTest extends WalaTestCase {
return true; return true;
} }
public AbstractMeetOperator getMeetOperator() { public AbstractMeetOperator<BitVectorVariable> getMeetOperator() {
return BitVectorUnion.instance(); return BitVectorUnion.instance();
} }
}; };
BitVectorFramework<String,String> F = new BitVectorFramework<String,String>(G, functions, values); BitVectorFramework<String,String> F = new BitVectorFramework<String,String>(G, functions, values);
DataflowSolver<String> s = new BitVectorSolver<String>(F); BitVectorSolver<String> s = new BitVectorSolver<String>(F);
s.solve(); s.solve();
return result2String(s); return result2String(s);
} }
public static String result2String(DataflowSolver<String> solver) { public static String result2String(BitVectorSolver<String> solver) {
StringBuffer result = new StringBuffer("------\n"); StringBuffer result = new StringBuffer("------\n");
for (int i = 0; i < nodes.length; i++) { for (int i = 0; i < nodes.length; i++) {
String n = nodes[i]; String n = nodes[i];