Class DexCFG

java.lang.Object
com.ibm.wala.cfg.AbstractCFG<Instruction,DexCFG.BasicBlock>
com.ibm.wala.dalvik.classLoader.DexCFG
All Implemented Interfaces:
com.ibm.wala.cfg.BytecodeCFG, com.ibm.wala.cfg.ControlFlowGraph<Instruction,DexCFG.BasicBlock>, com.ibm.wala.cfg.MinimalCFG<DexCFG.BasicBlock>, com.ibm.wala.shrike.shrikeBT.Constants, com.ibm.wala.util.graph.EdgeManager<DexCFG.BasicBlock>, com.ibm.wala.util.graph.Graph<DexCFG.BasicBlock>, com.ibm.wala.util.graph.NodeManager<DexCFG.BasicBlock>, com.ibm.wala.util.graph.NumberedEdgeManager<DexCFG.BasicBlock>, com.ibm.wala.util.graph.NumberedGraph<DexCFG.BasicBlock>, com.ibm.wala.util.graph.NumberedNodeManager<DexCFG.BasicBlock>, Iterable<DexCFG.BasicBlock>

public class DexCFG extends com.ibm.wala.cfg.AbstractCFG<Instruction,DexCFG.BasicBlock> implements com.ibm.wala.cfg.BytecodeCFG
  • Nested Class Summary

    Nested Classes
    Modifier and Type
    Class
    Description
    final class 
     
  • Field Summary

    Fields inherited from interface com.ibm.wala.shrike.shrikeBT.Constants

    ACC_ABSTRACT, ACC_ANNOTATION, ACC_ENUM, ACC_FINAL, ACC_INTERFACE, ACC_MODULE, ACC_NATIVE, ACC_PRIVATE, ACC_PROTECTED, ACC_PUBLIC, ACC_STATIC, ACC_STRICT, ACC_SUPER, ACC_SYNCHRONIZED, ACC_SYNTHETIC, ACC_TRANSIENT, ACC_VOLATILE, CONSTANT_Class, CONSTANT_Double, CONSTANT_FieldRef, CONSTANT_Float, CONSTANT_Integer, CONSTANT_InterfaceMethodRef, CONSTANT_InvokeDynamic, CONSTANT_Long, CONSTANT_MethodHandle, CONSTANT_MethodRef, CONSTANT_MethodType, CONSTANT_NameAndType, CONSTANT_String, CONSTANT_Utf8, indexedTypes, indexedTypes_T, MAYBE, NO, OP_aaload, OP_aastore, OP_aconst_null, OP_aload, OP_aload_0, OP_aload_1, OP_aload_2, OP_aload_3, OP_anewarray, OP_areturn, OP_arraylength, OP_astore, OP_astore_0, OP_astore_1, OP_astore_2, OP_astore_3, OP_athrow, OP_baload, OP_bastore, OP_bipush, OP_caload, OP_castore, OP_checkcast, OP_d2f, OP_d2i, OP_d2l, OP_dadd, OP_daload, OP_dastore, OP_dcmpg, OP_dcmpl, OP_dconst_0, OP_dconst_1, OP_ddiv, OP_dload, OP_dload_0, OP_dload_1, OP_dload_2, OP_dload_3, OP_dmul, OP_dneg, OP_drem, OP_dreturn, OP_dstore, OP_dstore_0, OP_dstore_1, OP_dstore_2, OP_dstore_3, OP_dsub, OP_dup, OP_dup_x1, OP_dup_x2, OP_dup2, OP_dup2_x1, OP_dup2_x2, OP_f2d, OP_f2i, OP_f2l, OP_fadd, OP_faload, OP_fastore, OP_fcmpg, OP_fcmpl, OP_fconst_0, OP_fconst_1, OP_fconst_2, OP_fdiv, OP_fload, OP_fload_0, OP_fload_1, OP_fload_2, OP_fload_3, OP_fmul, OP_fneg, OP_frem, OP_freturn, OP_fstore, OP_fstore_0, OP_fstore_1, OP_fstore_2, OP_fstore_3, OP_fsub, OP_getfield, OP_getstatic, OP_goto, OP_goto_w, OP_i2b, OP_i2c, OP_i2d, OP_i2f, OP_i2l, OP_i2s, OP_iadd, OP_iaload, OP_iand, OP_iastore, OP_iconst_0, OP_iconst_1, OP_iconst_2, OP_iconst_3, OP_iconst_4, OP_iconst_5, OP_iconst_m1, OP_idiv, OP_if_acmpeq, OP_if_acmpne, OP_if_icmpeq, OP_if_icmpge, OP_if_icmpgt, OP_if_icmple, OP_if_icmplt, OP_if_icmpne, OP_ifeq, OP_ifge, OP_ifgt, OP_ifle, OP_iflt, OP_ifne, OP_ifnonnull, OP_ifnull, OP_iinc, OP_iload, OP_iload_0, OP_iload_1, OP_iload_2, OP_iload_3, OP_imul, OP_ineg, OP_instanceof, OP_invokedynamic, OP_invokeinterface, OP_invokespecial, OP_invokestatic, OP_invokevirtual, OP_ior, OP_irem, OP_ireturn, OP_ishl, OP_ishr, OP_istore, OP_istore_0, OP_istore_1, OP_istore_2, OP_istore_3, OP_isub, OP_iushr, OP_ixor, OP_jsr, OP_jsr_w, OP_l2d, OP_l2f, OP_l2i, OP_ladd, OP_laload, OP_land, OP_lastore, OP_lcmp, OP_lconst_0, OP_lconst_1, OP_ldc, OP_ldc_w, OP_ldc2_w, OP_ldiv, OP_lload, OP_lload_0, OP_lload_1, OP_lload_2, OP_lload_3, OP_lmul, OP_lneg, OP_lookupswitch, OP_lor, OP_lrem, OP_lreturn, OP_lshl, OP_lshr, OP_lstore, OP_lstore_0, OP_lstore_1, OP_lstore_2, OP_lstore_3, OP_lsub, OP_lushr, OP_lxor, OP_monitorenter, OP_monitorexit, OP_multianewarray, OP_new, OP_newarray, OP_nop, OP_pop, OP_pop2, OP_putfield, OP_putstatic, OP_ret, OP_return, OP_saload, OP_sastore, OP_sipush, OP_swap, OP_tableswitch, OP_wide, T_BOOLEAN, T_BYTE, T_CHAR, T_DOUBLE, T_FLOAT, T_INT, T_LONG, T_SHORT, TYPE_boolean, TYPE_boolean_index, TYPE_byte, TYPE_byte_index, TYPE_char, TYPE_char_index, TYPE_Class, TYPE_double, TYPE_double_index, TYPE_Error, TYPE_Exception, TYPE_float, TYPE_float_index, TYPE_int, TYPE_int_index, TYPE_long, TYPE_long_index, TYPE_MethodHandle, TYPE_MethodType, TYPE_null, TYPE_Object, TYPE_Object_index, TYPE_RuntimeException, TYPE_short, TYPE_short_index, TYPE_String, TYPE_Throwable, TYPE_unknown, TYPE_void, YES
  • Constructor Summary

    Constructors
    Modifier
    Constructor
    Description
    protected
    DexCFG(DexIMethod method, com.ibm.wala.ipa.callgraph.Context context)
     
  • Method Summary

    Modifier and Type
    Method
    Description
    boolean
     
    Return an instruction's basic block in the CFG given the index of the instruction in the CFG's instruction array.
     
    Set<com.ibm.wala.shrike.shrikeBT.ExceptionHandler>
     
     
    int
     
    int
     
    int
    getProgramCounter(int index)
     
    static int
     
    int
     
     

    Methods inherited from class com.ibm.wala.cfg.AbstractCFG

    addEdge, addExceptionalEdge, addNode, addNormalEdge, containsNode, entry, exit, getCatchBlocks, getExceptionalPredecessors, getExceptionalSuccessors, getExceptionalToExit, getMaxNumber, getMethod, getNode, getNormalPredecessors, getNormalSuccessors, getNormalToExit, getNumber, getNumberOfExceptionalIn, getNumberOfExceptionalOut, getNumberOfExceptionalOut, getNumberOfNodes, getNumberOfNormalIn, getNumberOfNormalOut, getPredNodeCount, getPredNodeNumbers, getPredNodes, getSuccNodeCount, getSuccNodeNumbers, getSuccNodes, hasEdge, hasExceptionalEdge, hasNormalEdge, init, isCatchBlock, iterateNodes, iterator, removeAllIncidentEdges, removeEdge, removeIncomingEdges, removeNode, removeNodeAndEdges, removeOutgoingEdges, setCatchBlock, stream

    Methods inherited from class java.lang.Object

    clone, finalize, getClass, notify, notifyAll, wait, wait, wait

    Methods inherited from interface java.lang.Iterable

    forEach, spliterator
  • Constructor Details

  • Method Details

    • getDexMethod

      public DexIMethod getDexMethod()
    • getTotalEdges

      public static int getTotalEdges()
    • hashCode

      public int hashCode()
      Specified by:
      hashCode in class com.ibm.wala.cfg.AbstractCFG<Instruction,DexCFG.BasicBlock>
    • equals

      public boolean equals(Object o)
      Specified by:
      equals in class com.ibm.wala.cfg.AbstractCFG<Instruction,DexCFG.BasicBlock>
    • getInstructions

      public Instruction[] getInstructions()
      Specified by:
      getInstructions in interface com.ibm.wala.cfg.ControlFlowGraph<Instruction,DexCFG.BasicBlock>
    • getBlockForInstruction

      public DexCFG.BasicBlock getBlockForInstruction(int index)
      Return an instruction's basic block in the CFG given the index of the instruction in the CFG's instruction array.
      Specified by:
      getBlockForInstruction in interface com.ibm.wala.cfg.ControlFlowGraph<Instruction,DexCFG.BasicBlock>
    • toString

      public String toString()
      Overrides:
      toString in class com.ibm.wala.cfg.AbstractCFG<Instruction,DexCFG.BasicBlock>
    • getMaxStackHeight

      public int getMaxStackHeight()
    • getMaxLocals

      public int getMaxLocals()
    • getExceptionHandlers

      public Set<com.ibm.wala.shrike.shrikeBT.ExceptionHandler> getExceptionHandlers()
      Specified by:
      getExceptionHandlers in interface com.ibm.wala.cfg.BytecodeCFG
    • getProgramCounter

      public int getProgramCounter(int index)
      Specified by:
      getProgramCounter in interface com.ibm.wala.cfg.ControlFlowGraph<Instruction,DexCFG.BasicBlock>
      See Also:
      • ControlFlowGraph.getProgramCounter(int)