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 class
ShrikeCFG.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 boolean
equals(Object o)
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.Set<ExceptionHandler>
getExceptionHandlers()
IInstruction[]
getInstructions()
IBytecodeMethod
getMethod()
int
getProgramCounter(int index)
TODO: move this into IR?int
hashCode()
static ShrikeCFG
make(IBytecodeMethod m)
String
toString()
-
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:
getMethod
in interfaceControlFlowGraph<IInstruction,ShrikeCFG.BasicBlock>
- Overrides:
getMethod
in classAbstractCFG<IInstruction,ShrikeCFG.BasicBlock>
- Returns:
- the Method this CFG represents
-
hashCode
public int hashCode()
- Specified by:
hashCode
in classAbstractCFG<IInstruction,ShrikeCFG.BasicBlock>
-
equals
public boolean equals(Object o)
- Specified by:
equals
in classAbstractCFG<IInstruction,ShrikeCFG.BasicBlock>
-
getInstructions
public IInstruction[] getInstructions()
- Specified by:
getInstructions
in 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:
getBlockForInstruction
in interfaceControlFlowGraph<IInstruction,ShrikeCFG.BasicBlock>
- Parameters:
index
- an instruction index- Returns:
- the basic block which contains this instruction.
-
toString
public String toString()
- Overrides:
toString
in classAbstractCFG<IInstruction,ShrikeCFG.BasicBlock>
-
getExceptionHandlers
public Set<ExceptionHandler> getExceptionHandlers()
- Specified by:
getExceptionHandlers
in interfaceBytecodeCFG
-
getProgramCounter
public int getProgramCounter(int index)
Description copied from interface:ControlFlowGraph
TODO: move this into IR?- Specified by:
getProgramCounter
in interfaceControlFlowGraph<IInstruction,ShrikeCFG.BasicBlock>
- Parameters:
index
- an instruction index- Returns:
- the program counter (bytecode index) corresponding to that instruction
-
-