com.ibm.wala.ipa.callgraph.propagation.rta
Class DelegatingExplicitCallGraph

java.lang.Object
  extended by com.ibm.wala.util.graph.AbstractGraph<T>
      extended by com.ibm.wala.util.graph.AbstractNumberedGraph<CGNode>
          extended by com.ibm.wala.ipa.callgraph.impl.BasicCallGraph
              extended by com.ibm.wala.ipa.callgraph.impl.ExplicitCallGraph
                  extended by com.ibm.wala.ipa.callgraph.propagation.rta.DelegatingExplicitCallGraph
All Implemented Interfaces:
CallGraph, BytecodeConstants, EdgeManager<CGNode>, Graph<CGNode>, NodeManager<CGNode>, NumberedEdgeManager<CGNode>, NumberedGraph<CGNode>, NumberedNodeManager<CGNode>, java.lang.Iterable<CGNode>

public class DelegatingExplicitCallGraph
extends ExplicitCallGraph

A call graph implementation where some edges are delegated to other call sites, since they are guaranteed to be the same.


Nested Class Summary
 class DelegatingExplicitCallGraph.DelegatingCGNode
          In this implementation, super.targets is a mapping from call site -> Object, where Object is a A Mapping from call site -> Object, where Object is a CGNode if we've discovered exactly one target for the site or an IntSet of node numbers if we've discovered more than one target for the site.
 
Nested classes/interfaces inherited from class com.ibm.wala.ipa.callgraph.impl.ExplicitCallGraph
ExplicitCallGraph.ExplicitEdgeManager, ExplicitCallGraph.ExplicitNode
 
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.ExplicitCallGraph
cha, options
 
Fields inherited from interface com.ibm.wala.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
DelegatingExplicitCallGraph(IClassHierarchy cha, AnalysisOptions options)
           
 
Method Summary
protected  ExplicitCallGraph.ExplicitEdgeManager makeEdgeManger()
           
protected  ExplicitCallGraph.ExplicitNode makeNode(IMethod method, Context context)
          subclasses may wish to override!
 
Methods inherited from class com.ibm.wala.ipa.callgraph.impl.ExplicitCallGraph
findOrCreateNode, getClassHierarchy, getEdgeManager, makeFakeRootNode, makeFakeWorldClinitNode
 
Methods inherited from class com.ibm.wala.ipa.callgraph.impl.BasicCallGraph
containsNode, dump, getEntrypointNodes, getFakeRootNode, getFakeWorldClinitNode, getInterpreter, getNode, getNode, getNodeManager, getNodes, getNumberOfNodes, init, iterator, registerEntrypoint, registerNode, removeNodeAndEdges, setInterpreter, 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, getPredNodeCount, getPredNodes, getSuccNodeCount, getSuccNodes, hasEdge, removeAllIncidentEdges, removeEdge, removeIncomingEdges, removeNode, removeOutgoingEdges
 
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.NodeManager
addNode, removeNode
 
Methods inherited from interface com.ibm.wala.util.graph.EdgeManager
addEdge, getPredNodeCount, getPredNodes, getSuccNodeCount, getSuccNodes, hasEdge, removeAllIncidentEdges, removeEdge, removeIncomingEdges, removeOutgoingEdges
 
Methods inherited from interface com.ibm.wala.util.graph.NumberedNodeManager
getMaxNumber, getNode, getNumber, iterateNodes
 
Methods inherited from interface com.ibm.wala.util.graph.NodeManager
addNode, removeNode
 
Methods inherited from interface com.ibm.wala.util.graph.NumberedEdgeManager
getPredNodeNumbers, getSuccNodeNumbers
 
Methods inherited from interface com.ibm.wala.util.graph.EdgeManager
addEdge, getPredNodeCount, getPredNodes, getSuccNodeCount, getSuccNodes, hasEdge, removeAllIncidentEdges, removeEdge, removeIncomingEdges, removeOutgoingEdges
 

Constructor Detail

DelegatingExplicitCallGraph

public DelegatingExplicitCallGraph(IClassHierarchy cha,
                                   AnalysisOptions options)
Parameters:
cha -
options -
Method Detail

makeNode

protected ExplicitCallGraph.ExplicitNode makeNode(IMethod method,
                                                  Context context)
Description copied from class: ExplicitCallGraph
subclasses may wish to override!

Overrides:
makeNode in class ExplicitCallGraph

makeEdgeManger

protected ExplicitCallGraph.ExplicitEdgeManager makeEdgeManger()
Overrides:
makeEdgeManger in class ExplicitCallGraph