com.ibm.wala.shrikeBT
Class NewInstruction

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

public final class NewInstruction
extends Instruction


Nested Class Summary
 
Nested classes/interfaces inherited from class com.ibm.wala.shrikeBT.Instruction
Instruction.Visitor
 
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_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 NewInstruction(short opcode, java.lang.String type, short arrayBoundsCount)
           
 
Method Summary
 boolean equals(java.lang.Object o)
           
 int getArrayBoundsCount()
           
 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 NewInstruction make(java.lang.String type, int arrayBoundsCount)
           
 java.lang.String toString()
          Subclasses must implement toString.
 void visit(Instruction.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
 

Constructor Detail

NewInstruction

protected NewInstruction(short opcode,
                         java.lang.String type,
                         short arrayBoundsCount)
Method Detail

make

public static NewInstruction make(java.lang.String type,
                                  int arrayBoundsCount)
                           throws java.lang.IllegalArgumentException
Parameters:
type - the type of the object that will be returned (in JVM format, e.g., [Ljava/lang/String;)
arrayBoundsCount - the number of array dimensions to preconstruct (equal to the number of integer parameters this instruction expects)
Throws:
java.lang.IllegalArgumentException - if type is null

equals

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

getArrayBoundsCount

public int getArrayBoundsCount()

hashCode

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

getPoppedCount

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

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.

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()
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.

getType

public java.lang.String getType()

toString

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

Specified by:
toString in class Instruction

visit

public void visit(Instruction.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 class Instruction
Throws:
java.lang.IllegalArgumentException

isPEI

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

Returns:
true iff this instruction might throw an exception