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:
parent
2e9e5dec38
commit
30b445f94f
|
@ -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>.
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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>>() {
|
||||
|
|
|
@ -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 {
|
||||
|
|
Loading…
Reference in New Issue