com.ibm.wala.shrikeBT
Class InstanceofInstruction

java.lang.Object
  extended by com.ibm.wala.shrikeBT.Instruction
      extended by com.ibm.wala.shrikeBT.InstanceofInstruction
All Implemented Interfaces:
Constants, IInstanceofInstruction, IInstruction, java.lang.Cloneable

public final class InstanceofInstruction
extends Instruction
implements IInstanceofInstruction

This class represents instanceof instructions.


Nested Class Summary
 
Nested classes/interfaces inherited from interface com.ibm.wala.shrikeBT.IInstruction
IInstruction.Visitor
 
Field Summary
 
Fields inherited from class com.ibm.wala.shrikeBT.Instruction
noInstructions
 
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_Long, CONSTANT_MethodRef, 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_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, OP_xxxunusedxxx, 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_null, TYPE_Object, TYPE_Object_index, TYPE_RuntimeException, TYPE_short, TYPE_short_index, TYPE_String, TYPE_Throwable, TYPE_unknown, TYPE_void, YES
 
Constructor Summary
protected InstanceofInstruction(java.lang.String type)
           
 
Method Summary
 boolean equals(java.lang.Object o)
           
 boolean firstClassType()
           
 int getPoppedCount()
           
 java.lang.String getPushedType(java.lang.String[] types)
          Computes the type of data pushed onto the stack, or null if none is pushed.
 byte getPushedWordSize()
           
 java.lang.String getType()
           
 int hashCode()
           
 boolean isPEI()
          PEI == "Potentially excepting instruction"
static InstanceofInstruction make(java.lang.String type)
           
 java.lang.String toString()
          Subclasses must implement toString.
 void visit(IInstruction.Visitor v)
          Apply a Visitor to this instruction.
 
Methods inherited from class com.ibm.wala.shrikeBT.Instruction
clone, getBranchTargets, getOpcode, isFallThrough, redirectTargets
 
Methods inherited from class java.lang.Object
finalize, getClass, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface com.ibm.wala.shrikeBT.IInstruction
getBranchTargets, isFallThrough, redirectTargets
 

Constructor Detail

InstanceofInstruction

protected InstanceofInstruction(java.lang.String type)
Method Detail

make

public static InstanceofInstruction make(java.lang.String type)

equals

public boolean equals(java.lang.Object o)
Overrides:
equals in class java.lang.Object

hashCode

public int hashCode()
Overrides:
hashCode in class java.lang.Object

getPoppedCount

public int getPoppedCount()
Specified by:
getPoppedCount in interface IInstruction
Overrides:
getPoppedCount in class Instruction
Returns:
the number of values this instruction pops off the working stack

getType

public java.lang.String getType()
Specified by:
getType in interface IInstanceofInstruction

getPushedType

public java.lang.String getPushedType(java.lang.String[] types)
Description copied from class: Instruction
Computes the type of data pushed onto the stack, or null if none is pushed.

Specified by:
getPushedType in interface IInstruction
Overrides:
getPushedType in class Instruction
Parameters:
types - the types of the data popped off the stack by this instruction; if poppedTypes is null, then we don't know the incoming stack types and the result of this method may be less accurate

getPushedWordSize

public byte getPushedWordSize()
Specified by:
getPushedWordSize in interface IInstruction
Overrides:
getPushedWordSize in class Instruction
Returns:
the JVM word size of the value this instruction pushes onto the stack, or 0 if this instruction doesn't push anything onto the stack.

visit

public void visit(IInstruction.Visitor v)
           throws java.lang.IllegalArgumentException
Description copied from class: Instruction
Apply a Visitor to this instruction. We invoke the appropriate Visitor method according to the type of this instruction.

Specified by:
visit in interface IInstruction
Specified by:
visit in class Instruction
Throws:
java.lang.IllegalArgumentException

toString

public java.lang.String toString()
Description copied from class: Instruction
Subclasses must implement toString.

Specified by:
toString in interface IInstruction
Specified by:
toString in class Instruction

isPEI

public boolean isPEI()
Description copied from interface: IInstruction
PEI == "Potentially excepting instruction"

Specified by:
isPEI in interface IInstruction
Returns:
true iff this instruction might throw an exception

firstClassType

public boolean firstClassType()
Specified by:
firstClassType in interface IInstanceofInstruction