public class ExplicitCallGraph extends BasicCallGraph<SSAContextInterpreter> implements BytecodeConstants
Modifier and Type | Class and Description |
---|---|
protected class |
ExplicitCallGraph.ExplicitEdgeManager |
class |
ExplicitCallGraph.ExplicitNode |
BasicCallGraph.Key, BasicCallGraph.NodeImpl
Modifier and Type | Field and Description |
---|---|
protected IClassHierarchy |
cha |
protected AnalysisOptions |
options |
mr2Nodes
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 and Description |
---|
ExplicitCallGraph(IClassHierarchy cha,
AnalysisOptions options,
AnalysisCache cache) |
Modifier and Type | Method and Description |
---|---|
CGNode |
findOrCreateNode(IMethod method,
Context context)
Use with extreme care.
|
AnalysisCache |
getAnalysisCache() |
IClassHierarchy |
getClassHierarchy() |
NumberedEdgeManager<CGNode> |
getEdgeManager() |
int |
getNumberOfTargets(CGNode node,
CallSiteReference site) |
Iterator<CallSiteReference> |
getPossibleSites(CGNode src,
CGNode target) |
IntSet |
getPossibleTargetNumbers(CGNode node,
CallSiteReference site) |
Set<CGNode> |
getPossibleTargets(CGNode node,
CallSiteReference site)
Return the set of CGNodes that represent possible targets of a particular call site from a particular node
|
protected ExplicitCallGraph.ExplicitEdgeManager |
makeEdgeManger() |
protected CGNode |
makeFakeRootNode()
subclasses may wish to override!
|
protected CGNode |
makeFakeWorldClinitNode()
subclasses may wish to override!
|
protected ExplicitCallGraph.ExplicitNode |
makeNode(IMethod method,
Context context)
subclasses may wish to override!
|
containsNode, getEntrypointNodes, getFakeRootNode, getFakeWorldClinitNode, getInterpreter, getNode, getNode, getNodeManager, getNodes, getNumberOfNodes, init, iterator, registerEntrypoint, registerNode, removeNodeAndEdges, setInterpreter, summarizeByPackage, toString
getMaxNumber, getNode, getNumber, getPredNodeNumbers, getSuccNodeNumbers, iterateNodes
addEdge, addNode, getPredNodeCount, getPredNodes, getSuccNodeCount, getSuccNodes, hasEdge, removeAllIncidentEdges, removeEdge, removeIncomingEdges, removeNode, removeOutgoingEdges
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
getMaxNumber, getNode, getNumber, iterateNodes
addNode, removeNode
forEach, spliterator
getPredNodeNumbers, getSuccNodeNumbers
addEdge, getPredNodeCount, getPredNodes, getSuccNodeCount, getSuccNodes, hasEdge, removeAllIncidentEdges, removeEdge, removeIncomingEdges, removeOutgoingEdges
protected final IClassHierarchy cha
protected final AnalysisOptions options
public ExplicitCallGraph(IClassHierarchy cha, AnalysisOptions options, AnalysisCache cache)
protected ExplicitCallGraph.ExplicitNode makeNode(IMethod method, Context context)
protected CGNode makeFakeRootNode() throws CancelException
makeFakeRootNode
in class BasicCallGraph<SSAContextInterpreter>
CancelException
protected CGNode makeFakeWorldClinitNode() throws CancelException
makeFakeWorldClinitNode
in class BasicCallGraph<SSAContextInterpreter>
CancelException
public CGNode findOrCreateNode(IMethod method, Context context) throws CancelException
BasicCallGraph
findOrCreateNode
in class BasicCallGraph<SSAContextInterpreter>
CancelException
- TODOpublic IClassHierarchy getClassHierarchy()
getClassHierarchy
in interface CallGraph
public NumberedEdgeManager<CGNode> getEdgeManager()
getEdgeManager
in class AbstractNumberedGraph<CGNode>
protected ExplicitCallGraph.ExplicitEdgeManager makeEdgeManger()
public int getNumberOfTargets(CGNode node, CallSiteReference site)
getNumberOfTargets
in interface CallGraph
public Iterator<CallSiteReference> getPossibleSites(CGNode src, CGNode target)
getPossibleSites
in interface CallGraph
public Set<CGNode> getPossibleTargets(CGNode node, CallSiteReference site)
CallGraph
getPossibleTargets
in interface CallGraph
public IntSet getPossibleTargetNumbers(CGNode node, CallSiteReference site)
public AnalysisCache getAnalysisCache()