CGNode implements IClassHierarchyDweller.

misc. small cleanups

git-svn-id: https://wala.svn.sourceforge.net/svnroot/wala/trunk@1881 f5eafffb-2e1d-0410-98e4-8ec43c5233c4
This commit is contained in:
sjfink 2007-10-15 16:34:02 +00:00
parent 2e9e5dec38
commit 30b445f94f
4 changed files with 13 additions and 5 deletions

View File

@ -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 <code>null</code>.

View File

@ -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<CGNode> imple
public abstract boolean addTarget(CallSiteReference reference, CGNode target);
public IClassHierarchy getClassHierarchy() {
return method.getClassHierarchy();
}
}
@Override

View File

@ -655,7 +655,7 @@ public abstract class AbstractInterproceduralCFG<T extends ISSABasicBlock> imple
return new FilterIterator<BasicBlockInContext>(getSuccNodes(bb), isReturn);
}
public Iterator<BasicBlockInContext> getCallSites(BasicBlockInContext<T> bb) {
public Iterator<BasicBlockInContext<T>> getCallSites(BasicBlockInContext<T> bb) {
if (bb == null) {
throw new IllegalArgumentException("bb is null");
}
@ -669,7 +669,7 @@ public abstract class AbstractInterproceduralCFG<T extends ISSABasicBlock> imple
}
};
MapIterator<T, BasicBlockInContext<T>> m = new MapIterator<T, BasicBlockInContext<T>>(it, toContext);
return new FilterIterator<BasicBlockInContext>(m, isCall);
return new FilterIterator<BasicBlockInContext<T>>(m, isCall);
}
private final Filter<BasicBlockInContext<T>> isCall = new Filter<BasicBlockInContext<T>>() {

View File

@ -199,9 +199,11 @@ public class ExplodedControlFlowGraph implements ControlFlowGraph<ExplodedContro
}
}
/*
* @see com.ibm.wala.cfg.ControlFlowGraph#getProgramCounter(int)
*/
public int getProgramCounter(int index) throws UnimplementedError {
Assertions.UNREACHABLE();
return 0;
return ir.getControlFlowGraph().getProgramCounter(index);
}
public void removeNodeAndEdges(ExplodedBasicBlock N) throws UnsupportedOperationException {