Package com.ibm.wala.cfg
Class ShrikeCFG
- java.lang.Object
-
- com.ibm.wala.cfg.AbstractCFG<IInstruction,ShrikeCFG.BasicBlock>
-
- com.ibm.wala.cfg.ShrikeCFG
-
- All Implemented Interfaces:
BytecodeCFG,ControlFlowGraph<IInstruction,ShrikeCFG.BasicBlock>,Constants,EdgeManager<ShrikeCFG.BasicBlock>,Graph<ShrikeCFG.BasicBlock>,NodeManager<ShrikeCFG.BasicBlock>,NumberedEdgeManager<ShrikeCFG.BasicBlock>,NumberedGraph<ShrikeCFG.BasicBlock>,NumberedNodeManager<ShrikeCFG.BasicBlock>,Iterable<ShrikeCFG.BasicBlock>
public class ShrikeCFG extends AbstractCFG<IInstruction,ShrikeCFG.BasicBlock> implements BytecodeCFG
A graph of basic blocks.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description classShrikeCFG.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
-
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description booleanequals(Object o)ShrikeCFG.BasicBlockgetBlockForInstruction(int index)Return an instruction's basic block in the CFG given the index of the instruction in the CFG's instruction array.Set<ExceptionHandler>getExceptionHandlers()IInstruction[]getInstructions()IBytecodeMethodgetMethod()intgetProgramCounter(int index)TODO: move this into IR?inthashCode()static ShrikeCFGmake(IBytecodeMethod m)StringtoString()-
Methods inherited from class com.ibm.wala.cfg.AbstractCFG
addEdge, addExceptionalEdge, addNode, addNormalEdge, containsNode, entry, exit, getCatchBlocks, getExceptionalPredecessors, getExceptionalSuccessors, getExceptionalToExit, getMaxNumber, 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
-
-
-
-
Method Detail
-
make
public static ShrikeCFG make(IBytecodeMethod m)
-
getMethod
public IBytecodeMethod getMethod()
- Specified by:
getMethodin interfaceControlFlowGraph<IInstruction,ShrikeCFG.BasicBlock>- Overrides:
getMethodin classAbstractCFG<IInstruction,ShrikeCFG.BasicBlock>- Returns:
- the Method this CFG represents
-
hashCode
public int hashCode()
- Specified by:
hashCodein classAbstractCFG<IInstruction,ShrikeCFG.BasicBlock>
-
equals
public boolean equals(Object o)
- Specified by:
equalsin classAbstractCFG<IInstruction,ShrikeCFG.BasicBlock>
-
getInstructions
public IInstruction[] getInstructions()
- Specified by:
getInstructionsin interfaceControlFlowGraph<IInstruction,ShrikeCFG.BasicBlock>- Returns:
- the instructions of this CFG, as an array.
-
getBlockForInstruction
public ShrikeCFG.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<IInstruction,ShrikeCFG.BasicBlock>- Parameters:
index- an instruction index- Returns:
- the basic block which contains this instruction.
-
toString
public String toString()
- Overrides:
toStringin classAbstractCFG<IInstruction,ShrikeCFG.BasicBlock>
-
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<IInstruction,ShrikeCFG.BasicBlock>- Parameters:
index- an instruction index- Returns:
- the program counter (bytecode index) corresponding to that instruction
-
-