diff --git a/com.ibm.wala.core/src/com/ibm/wala/ipa/callgraph/CGNode.java b/com.ibm.wala.core/src/com/ibm/wala/ipa/callgraph/CGNode.java
index e2be5c005..27723f38a 100644
--- a/com.ibm.wala.core/src/com/ibm/wala/ipa/callgraph/CGNode.java
+++ b/com.ibm.wala.core/src/com/ibm/wala/ipa/callgraph/CGNode.java
@@ -15,6 +15,7 @@ import java.util.Iterator;
import com.ibm.wala.classLoader.CallSiteReference;
import com.ibm.wala.classLoader.IMethod;
import com.ibm.wala.classLoader.NewSiteReference;
+import com.ibm.wala.ipa.cha.IClassHierarchyDweller;
import com.ibm.wala.ssa.DefUse;
import com.ibm.wala.ssa.IR;
import com.ibm.wala.util.graph.INodeWithNumber;
@@ -25,7 +26,7 @@ import com.ibm.wala.util.graph.INodeWithNumber;
* @author Stephen Fink
*/
-public interface CGNode extends INodeWithNumber, ContextItem {
+public interface CGNode extends INodeWithNumber, ContextItem, IClassHierarchyDweller {
/**
* Return the {@link IMethod method} this CGNode represents.
* This value will never be null
.
diff --git a/com.ibm.wala.core/src/com/ibm/wala/ipa/callgraph/impl/BasicCallGraph.java b/com.ibm.wala.core/src/com/ibm/wala/ipa/callgraph/impl/BasicCallGraph.java
index 5c4dd008f..8bc710217 100644
--- a/com.ibm.wala.core/src/com/ibm/wala/ipa/callgraph/impl/BasicCallGraph.java
+++ b/com.ibm.wala.core/src/com/ibm/wala/ipa/callgraph/impl/BasicCallGraph.java
@@ -22,6 +22,7 @@ import com.ibm.wala.ipa.callgraph.CGNode;
import com.ibm.wala.ipa.callgraph.CallGraph;
import com.ibm.wala.ipa.callgraph.Context;
import com.ibm.wala.ipa.callgraph.propagation.SSAContextInterpreter;
+import com.ibm.wala.ipa.cha.IClassHierarchy;
import com.ibm.wala.shrikeBT.IInvokeInstruction;
import com.ibm.wala.types.MethodReference;
import com.ibm.wala.util.collections.HashMapFactory;
@@ -217,6 +218,10 @@ public abstract class BasicCallGraph extends AbstractNumberedGraph imple
public abstract boolean addTarget(CallSiteReference reference, CGNode target);
+
+ public IClassHierarchy getClassHierarchy() {
+ return method.getClassHierarchy();
+ }
}
@Override
diff --git a/com.ibm.wala.core/src/com/ibm/wala/ipa/cfg/AbstractInterproceduralCFG.java b/com.ibm.wala.core/src/com/ibm/wala/ipa/cfg/AbstractInterproceduralCFG.java
index be9fd9fd0..79825dba4 100644
--- a/com.ibm.wala.core/src/com/ibm/wala/ipa/cfg/AbstractInterproceduralCFG.java
+++ b/com.ibm.wala.core/src/com/ibm/wala/ipa/cfg/AbstractInterproceduralCFG.java
@@ -655,7 +655,7 @@ public abstract class AbstractInterproceduralCFG imple
return new FilterIterator(getSuccNodes(bb), isReturn);
}
- public Iterator getCallSites(BasicBlockInContext bb) {
+ public Iterator> getCallSites(BasicBlockInContext bb) {
if (bb == null) {
throw new IllegalArgumentException("bb is null");
}
@@ -669,7 +669,7 @@ public abstract class AbstractInterproceduralCFG imple
}
};
MapIterator> m = new MapIterator>(it, toContext);
- return new FilterIterator(m, isCall);
+ return new FilterIterator>(m, isCall);
}
private final Filter> isCall = new Filter>() {
diff --git a/com.ibm.wala.core/src/com/ibm/wala/ssa/analysis/ExplodedControlFlowGraph.java b/com.ibm.wala.core/src/com/ibm/wala/ssa/analysis/ExplodedControlFlowGraph.java
index f0b7f69a8..23a3730ac 100644
--- a/com.ibm.wala.core/src/com/ibm/wala/ssa/analysis/ExplodedControlFlowGraph.java
+++ b/com.ibm.wala.core/src/com/ibm/wala/ssa/analysis/ExplodedControlFlowGraph.java
@@ -199,9 +199,11 @@ public class ExplodedControlFlowGraph implements ControlFlowGraph