Class ExplicitCallGraph
java.lang.Object
com.ibm.wala.util.graph.AbstractGraph<CGNode>
com.ibm.wala.util.graph.AbstractNumberedGraph<CGNode>
com.ibm.wala.ipa.callgraph.impl.BasicCallGraph<SSAContextInterpreter>
com.ibm.wala.ipa.callgraph.impl.ExplicitCallGraph
- All Implemented Interfaces:
CallGraph
,BytecodeConstants
,EdgeManager<CGNode>
,Graph<CGNode>
,NodeManager<CGNode>
,NumberedEdgeManager<CGNode>
,NumberedGraph<CGNode>
,NumberedNodeManager<CGNode>
,Iterable<CGNode>
- Direct Known Subclasses:
AstCallGraph
,DelegatingExplicitCallGraph
public class ExplicitCallGraph
extends BasicCallGraph<SSAContextInterpreter>
implements BytecodeConstants
A call graph which explicitly holds the target for each call site in each node.
-
Nested Class Summary
Modifier and TypeClassDescriptionprotected class
class
Nested classes/interfaces inherited from class com.ibm.wala.ipa.callgraph.impl.BasicCallGraph
BasicCallGraph.Key, BasicCallGraph.NodeImpl
-
Field Summary
Fields inherited from class com.ibm.wala.ipa.callgraph.impl.BasicCallGraph
mr2Nodes
Fields inherited from interface com.ibm.wala.shrike.shrikeBT.BytecodeConstants
JBC_aaload, JBC_aastore, JBC_aconst_null, JBC_aload, JBC_aload_0, JBC_aload_1, JBC_aload_2, JBC_aload_3, JBC_anewarray, JBC_areturn, JBC_arraylength, JBC_astore, JBC_astore_0, JBC_astore_1, JBC_astore_2, JBC_astore_3, JBC_athrow, JBC_baload, JBC_bastore, JBC_bipush, JBC_caload, JBC_castore, JBC_checkcast, JBC_d2f, JBC_d2i, JBC_d2l, JBC_dadd, JBC_daload, JBC_dastore, JBC_dcmpg, JBC_dcmpl, JBC_dconst_0, JBC_dconst_1, JBC_ddiv, JBC_dload, JBC_dload_0, JBC_dload_1, JBC_dload_2, JBC_dload_3, JBC_dmul, JBC_dneg, JBC_drem, JBC_dreturn, JBC_dstore, JBC_dstore_0, JBC_dstore_1, JBC_dstore_2, JBC_dstore_3, JBC_dsub, JBC_dup, JBC_dup_x1, JBC_dup_x2, JBC_dup2, JBC_dup2_x1, JBC_dup2_x2, JBC_f2d, JBC_f2i, JBC_f2l, JBC_fadd, JBC_faload, JBC_fastore, JBC_fcmpg, JBC_fcmpl, JBC_fconst_0, JBC_fconst_1, JBC_fconst_2, JBC_fdiv, JBC_fload, JBC_fload_0, JBC_fload_1, JBC_fload_2, JBC_fload_3, JBC_fmul, JBC_fneg, JBC_frem, JBC_freturn, JBC_fstore, JBC_fstore_0, JBC_fstore_1, JBC_fstore_2, JBC_fstore_3, JBC_fsub, JBC_getfield, JBC_getstatic, JBC_goto, JBC_goto_w, JBC_i2d, JBC_i2f, JBC_i2l, JBC_iadd, JBC_iaload, JBC_iand, JBC_iastore, JBC_iconst_0, JBC_iconst_1, JBC_iconst_2, JBC_iconst_3, JBC_iconst_4, JBC_iconst_5, JBC_iconst_m1, JBC_idiv, JBC_if_acmpeq, JBC_if_acmpne, JBC_if_icmpeq, JBC_if_icmpge, JBC_if_icmpgt, JBC_if_icmple, JBC_if_icmplt, JBC_if_icmpne, JBC_ifeq, JBC_ifge, JBC_ifgt, JBC_ifle, JBC_iflt, JBC_ifne, JBC_ifnonnull, JBC_ifnull, JBC_iinc, JBC_iload, JBC_iload_0, JBC_iload_1, JBC_iload_2, JBC_iload_3, JBC_impdep1, JBC_impdep2, JBC_imul, JBC_ineg, JBC_instanceof, JBC_int2byte, JBC_int2char, JBC_int2short, JBC_invokeinterface, JBC_invokespecial, JBC_invokestatic, JBC_invokevirtual, JBC_ior, JBC_irem, JBC_ireturn, JBC_ishl, JBC_ishr, JBC_istore, JBC_istore_0, JBC_istore_1, JBC_istore_2, JBC_istore_3, JBC_isub, JBC_iushr, JBC_ixor, JBC_jsr, JBC_jsr_w, JBC_l2d, JBC_l2f, JBC_l2i, JBC_ladd, JBC_laload, JBC_land, JBC_lastore, JBC_lcmp, JBC_lconst_0, JBC_lconst_1, JBC_ldc, JBC_ldc_w, JBC_ldc2_w, JBC_ldiv, JBC_length, JBC_lload, JBC_lload_0, JBC_lload_1, JBC_lload_2, JBC_lload_3, JBC_lmul, JBC_lneg, JBC_lookupswitch, JBC_lor, JBC_lrem, JBC_lreturn, JBC_lshl, JBC_lshr, JBC_lstore, JBC_lstore_0, JBC_lstore_1, JBC_lstore_2, JBC_lstore_3, JBC_lsub, JBC_lushr, JBC_lxor, JBC_monitorenter, JBC_monitorexit, JBC_multianewarray, JBC_name, JBC_new, JBC_newarray, JBC_nop, JBC_pop, JBC_pop2, JBC_putfield, JBC_putstatic, JBC_ret, JBC_return, JBC_saload, JBC_sastore, JBC_sipush, JBC_swap, JBC_tableswitch, JBC_wide, JBC_xxxunusedxxx
-
Constructor Summary
ConstructorDescriptionExplicitCallGraph
(IMethod fakeRootMethod, AnalysisOptions options, IAnalysisCacheView cache) -
Method Summary
Modifier and TypeMethodDescriptionfindOrCreateNode
(IMethod method, Context context) Use with extreme care.int
getNumberOfTargets
(CGNode node, CallSiteReference site) getPossibleSites
(CGNode src, CGNode target) getPossibleTargetNumbers
(CGNode node, CallSiteReference site) getPossibleTargets
(CGNode node, CallSiteReference site) Return the set of CGNodes that represent possible targets of a particular call site from a particular nodeprotected ExplicitCallGraph.ExplicitEdgeManager
protected CGNode
subclasses may wish to override!protected CGNode
subclasses may wish to override!protected ExplicitCallGraph.ExplicitNode
subclasses may wish to override!Methods inherited from class com.ibm.wala.ipa.callgraph.impl.BasicCallGraph
containsNode, getEntrypointNodes, getFakeRootNode, getFakeWorldClinitNode, getInterpreter, getNode, getNode, getNodeManager, getNodes, getNumberOfNodes, init, iterator, nodeToString, registerEntrypoint, registerNode, removeNodeAndEdges, setInterpreter, summarizeByPackage, toString
Methods inherited from class com.ibm.wala.util.graph.AbstractNumberedGraph
getMaxNumber, getNode, getNumber, getPredNodeNumbers, getSuccNodeNumbers, iterateNodes
Methods inherited from class com.ibm.wala.util.graph.AbstractGraph
addEdge, addNode, edgeString, getPredNodeCount, getPredNodes, getSuccNodeCount, getSuccNodes, hasEdge, nodeString, removeAllIncidentEdges, removeEdge, removeIncomingEdges, removeNode, removeOutgoingEdges, stream
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
Methods inherited from interface com.ibm.wala.util.graph.EdgeManager
addEdge, getPredNodeCount, getPredNodes, getSuccNodeCount, getSuccNodes, hasEdge, removeAllIncidentEdges, removeEdge, removeIncomingEdges, removeOutgoingEdges
Methods inherited from interface java.lang.Iterable
forEach, spliterator
Methods inherited from interface com.ibm.wala.util.graph.NodeManager
addNode, removeNode, stream
Methods inherited from interface com.ibm.wala.util.graph.NumberedEdgeManager
getPredNodeNumbers, getSuccNodeNumbers
Methods inherited from interface com.ibm.wala.util.graph.NumberedNodeManager
getMaxNumber, getNode, getNumber, iterateNodes
-
Field Details
-
cha
-
options
-
-
Constructor Details
-
ExplicitCallGraph
-
-
Method Details
-
makeNode
subclasses may wish to override! -
makeFakeRootNode
subclasses may wish to override!- Specified by:
makeFakeRootNode
in classBasicCallGraph<SSAContextInterpreter>
- Throws:
CancelException
-
makeFakeWorldClinitNode
subclasses may wish to override!- Specified by:
makeFakeWorldClinitNode
in classBasicCallGraph<SSAContextInterpreter>
- Throws:
CancelException
-
findOrCreateNode
Description copied from class:BasicCallGraph
Use with extreme care.- Specified by:
findOrCreateNode
in classBasicCallGraph<SSAContextInterpreter>
- Throws:
CancelException
- TODO
-
getClassHierarchy
- Specified by:
getClassHierarchy
in interfaceCallGraph
- Returns:
- the governing class hierarchy for this call graph
- See Also:
-
getEdgeManager
- Specified by:
getEdgeManager
in classAbstractNumberedGraph<CGNode>
- Returns:
- Returns the edgeManger.
-
makeEdgeManger
-
getNumberOfTargets
- Specified by:
getNumberOfTargets
in interfaceCallGraph
- Returns:
- the number of nodes that the call site may dispatch to
-
getPossibleSites
- Specified by:
getPossibleSites
in interfaceCallGraph
- Returns:
- iterator of CallSiteReference, the call sites in a node that might dispatch to the target node.
-
getPossibleTargets
Description copied from interface:CallGraph
Return the set of CGNodes that represent possible targets of a particular call site from a particular node- Specified by:
getPossibleTargets
in interfaceCallGraph
-
getPossibleTargetNumbers
-
getAnalysisCache
-