Package com.ibm.wala.dalvik.classLoader
Class DexCFG
- java.lang.Object
-
- com.ibm.wala.cfg.AbstractCFG<Instruction,DexCFG.BasicBlock>
-
- com.ibm.wala.dalvik.classLoader.DexCFG
-
- All Implemented Interfaces:
BytecodeCFG,ControlFlowGraph<Instruction,DexCFG.BasicBlock>,Constants,EdgeManager<DexCFG.BasicBlock>,Graph<DexCFG.BasicBlock>,NodeManager<DexCFG.BasicBlock>,NumberedEdgeManager<DexCFG.BasicBlock>,NumberedGraph<DexCFG.BasicBlock>,NumberedNodeManager<DexCFG.BasicBlock>,Iterable<DexCFG.BasicBlock>
public class DexCFG extends AbstractCFG<Instruction,DexCFG.BasicBlock> implements BytecodeCFG
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description classDexCFG.BasicBlock
-
Field Summary
-
Fields inherited from interface com.ibm.wala.shrikeBT.Constants
ACC_ABSTRACT, ACC_FINAL, ACC_INTERFACE, ACC_NATIVE, ACC_PRIVATE, ACC_PROTECTED, ACC_PUBLIC, ACC_STATIC, ACC_STRICT, ACC_SUPER, ACC_SYNCHRONIZED, 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 protectedDexCFG(DexIMethod method, Context context)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description booleanequals(Object o)DexCFG.BasicBlockgetBlockForInstruction(int index)Return an instruction's basic block in the CFG given the index of the instruction in the CFG's instruction array.DexIMethodgetDexMethod()Set<ExceptionHandler>getExceptionHandlers()Instruction[]getInstructions()intgetMaxLocals()intgetMaxStackHeight()intgetProgramCounter(int index)TODO: move this into IR?static intgetTotalEdges()inthashCode()StringtoString()-
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
-
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 Detail
-
DexCFG
protected DexCFG(DexIMethod method, Context context) throws IllegalArgumentException
- Throws:
IllegalArgumentException
-
-
Method Detail
-
getDexMethod
public DexIMethod getDexMethod()
-
getTotalEdges
public static int getTotalEdges()
-
hashCode
public int hashCode()
- Specified by:
hashCodein classAbstractCFG<Instruction,DexCFG.BasicBlock>
-
equals
public boolean equals(Object o)
- Specified by:
equalsin classAbstractCFG<Instruction,DexCFG.BasicBlock>
-
getInstructions
public Instruction[] getInstructions()
- Specified by:
getInstructionsin interfaceControlFlowGraph<Instruction,DexCFG.BasicBlock>- Returns:
- the instructions of this CFG, as an array.
-
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:
getBlockForInstructionin interfaceControlFlowGraph<Instruction,DexCFG.BasicBlock>- Parameters:
index- an instruction index- Returns:
- the basic block which contains this instruction.
-
toString
public String toString()
- Overrides:
toStringin classAbstractCFG<Instruction,DexCFG.BasicBlock>
-
getMaxStackHeight
public int getMaxStackHeight()
-
getMaxLocals
public int getMaxLocals()
-
getExceptionHandlers
public Set<ExceptionHandler> getExceptionHandlers()
- Specified by:
getExceptionHandlersin interfaceBytecodeCFG
-
getProgramCounter
public int getProgramCounter(int index)
Description copied from interface:ControlFlowGraphTODO: move this into IR?- Specified by:
getProgramCounterin interfaceControlFlowGraph<Instruction,DexCFG.BasicBlock>- Parameters:
index- an instruction index- Returns:
- the program counter (bytecode index) corresponding to that instruction
-
-