at.dms.classfile
Class MultiarrayInstruction

java.lang.Object
  |
  +--at.dms.classfile.AbstractInstructionAccessor
        |
        +--at.dms.classfile.Instruction
              |
              +--at.dms.classfile.MultiarrayInstruction
All Implemented Interfaces:
Constants, InstructionAccessor

public class MultiarrayInstruction
extends Instruction

Some instructions are perniticky enough that its simpler to write them separately instead of smushing them with all the rest. the multiarray instruction is one of them.


Fields inherited from interface at.dms.classfile.Constants
ACC_ABSTRACT, ACC_FINAL, ACC_INTERFACE, ACC_NATIVE, ACC_NBR_FLAGS, ACC_PRIVATE, ACC_PROTECTED, ACC_PUBLIC, ACC_STATIC, ACC_STRICT, ACC_SUPER, ACC_SYNCHRONIZED, ACC_TRANSIENT, ACC_VOLATILE, ATT_CODE, ATT_CONSTANTVALUE, ATT_DEPRECATED, ATT_EXCEPTIONS, ATT_GENERIC, ATT_INNERCLASSES, ATT_LINENUMBERTABLE, ATT_LOCALVARIABLETABLE, ATT_SOURCEFILE, ATT_SYNTHETIC, CST_CLASS, CST_DOUBLE, CST_FIELD, CST_FLOAT, CST_INTEGER, CST_INTERFACEMETHOD, CST_LONG, CST_METHOD, CST_NAMEANDTYPE, CST_STRING, CST_UTF8, ENV_DEBUG_MODE, ENV_USE_CACHE, JAVA_MAGIC, JAVA_MAJOR, JAVA_MINOR, MAX_CODE_PER_METHOD, opc_aaload, opc_aastore, opc_aconst_null, opc_aload, opc_aload_0, opc_aload_1, opc_aload_2, opc_aload_3, opc_anewarray, opc_areturn, opc_arraylength, opc_astore, opc_astore_0, opc_astore_1, opc_astore_2, opc_astore_3, opc_athrow, opc_baload, opc_bastore, opc_bipush, opc_caload, opc_castore, opc_checkcast, opc_d2f, opc_d2i, opc_d2l, opc_dadd, opc_daload, opc_dastore, opc_dcmpg, opc_dcmpl, opc_dconst_0, opc_dconst_1, opc_ddiv, opc_dload, opc_dload_0, opc_dload_1, opc_dload_2, opc_dload_3, opc_dmul, opc_dneg, opc_drem, opc_dreturn, opc_dstore, opc_dstore_0, opc_dstore_1, opc_dstore_2, opc_dstore_3, opc_dsub, opc_dup, opc_dup_x1, opc_dup_x2, opc_dup2, opc_dup2_x1, opc_dup2_x2, opc_f2d, opc_f2i, opc_f2l, opc_fadd, opc_faload, opc_fastore, opc_fcmpg, opc_fcmpl, opc_fconst_0, opc_fconst_1, opc_fconst_2, opc_fdiv, opc_fload, opc_fload_0, opc_fload_1, opc_fload_2, opc_fload_3, opc_fmul, opc_fneg, opc_frem, opc_freturn, opc_fstore, opc_fstore_0, opc_fstore_1, opc_fstore_2, opc_fstore_3, opc_fsub, opc_getfield, opc_getstatic, opc_goto, opc_goto_w, opc_i2b, opc_i2c, opc_i2d, opc_i2f, opc_i2l, opc_i2s, opc_iadd, opc_iaload, opc_iand, opc_iastore, opc_iconst_0, opc_iconst_1, opc_iconst_2, opc_iconst_3, opc_iconst_4, opc_iconst_5, opc_iconst_m1, opc_idiv, opc_if_acmpeq, opc_if_acmpne, opc_if_icmpeq, opc_if_icmpge, opc_if_icmpgt, opc_if_icmple, opc_if_icmplt, opc_if_icmpne, opc_ifeq, opc_ifge, opc_ifgt, opc_ifle, opc_iflt, opc_ifne, opc_ifnonnull, opc_ifnull, opc_iinc, opc_iload, opc_iload_0, opc_iload_1, opc_iload_2, opc_iload_3, opc_imul, opc_ineg, opc_instanceof, opc_invokeinterface, opc_invokespecial, opc_invokestatic, opc_invokevirtual, opc_ior, opc_irem, opc_ireturn, opc_ishl, opc_ishr, opc_istore, opc_istore_0, opc_istore_1, opc_istore_2, opc_istore_3, opc_isub, opc_iushr, opc_ixor, opc_jsr, opc_jsr_w, opc_l2d, opc_l2f, opc_l2i, opc_ladd, opc_laload, opc_land, opc_lastore, opc_lcmp, opc_lconst_0, opc_lconst_1, opc_ldc, opc_ldc_w, opc_ldc2_w, opc_ldiv, opc_lload, opc_lload_0, opc_lload_1, opc_lload_2, opc_lload_3, opc_lmul, opc_lneg, opc_lookupswitch, opc_lor, opc_lrem, opc_lreturn, opc_lshl, opc_lshr, opc_lstore, opc_lstore_0, opc_lstore_1, opc_lstore_2, opc_lstore_3, opc_lsub, opc_lushr, opc_lxor, opc_monitorenter, opc_monitorexit, opc_multianewarray, opc_new, opc_newarray, opc_nop, opc_pop, opc_pop2, opc_putfield, opc_putstatic, opc_ret, opc_return, opc_saload, opc_sastore, opc_sipush, opc_swap, opc_tableswitch, opc_wide, opc_xxxunusedxxx, POO_ASCII_CONSTANT, POO_CLASS_CONSTANT, POO_DOUBLE_CONSTANT, POO_FLOAT_CONSTANT, POO_INTEGER_CONSTANT, POO_LONG_CONSTANT, POO_NAT_CONSTANT, POO_REF_CONSTANT, POO_STRING_CONSTANT, TYP_ADDRESS, TYP_DOUBLE, TYP_FLOAT, TYP_INT, TYP_LONG, TYP_REFERENCE, TYP_VOID
 
Constructor Summary
MultiarrayInstruction(ClassConstant type, int dims)
          Constructs a new multiarray instruction from a class file.
MultiarrayInstruction(java.lang.String name, int dims)
          Constructs a new multiarray instruction.
 
Method Summary
 boolean canComplete()
          Returns true iff control flow can reach the next instruction in textual order.
 int getDimension()
          Return the number of dimension of this array.
 int getPushedOnStack()
          Returns the size of data pushed on the stack by this instruction.
 byte getReturnType()
          Returns the type pushed on the stack.
(package private)  int getSize()
          Returns the number of bytes used by the the instruction in the code array.
 int getStack()
          Return the amount of stack (positive or negative) used by this instruction.
 java.lang.String getType()
          Return the type of the array.
(package private)  void resolveConstants(ConstantPool cp)
          Insert or check location of constant value on constant pool.
(package private)  void write(ConstantPool cp, java.io.DataOutput out)
          Write this instruction into a file.
 
Methods inherited from class at.dms.classfile.Instruction
check, computeEndAddress, dump, getAddress, getLocalVar, getOpcode, getPoppedFromStack, isLiteral, setAddress, setOpcode
 
Methods inherited from class at.dms.classfile.AbstractInstructionAccessor
transform
 
Methods inherited from class java.lang.Object
, clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

MultiarrayInstruction

public MultiarrayInstruction(java.lang.String name,
                             int dims)
Constructs a new multiarray instruction.
Parameters:
name - The qualified name of the base class.
dims - Number of dimensions for the array.

MultiarrayInstruction

public MultiarrayInstruction(ClassConstant type,
                             int dims)
Constructs a new multiarray instruction from a class file.
Parameters:
type - The base class as a pooled constant.
dims - Number of dimensions for the array.
Method Detail

canComplete

public boolean canComplete()
Returns true iff control flow can reach the next instruction in textual order.
Overrides:
canComplete in class Instruction

resolveConstants

void resolveConstants(ConstantPool cp)
Insert or check location of constant value on constant pool.
Overrides:
resolveConstants in class Instruction
Parameters:
cp - the constant pool for this class.

getSize

int getSize()
Returns the number of bytes used by the the instruction in the code array.
Overrides:
getSize in class Instruction

getType

public java.lang.String getType()
Return the type of the array.

getDimension

public int getDimension()
Return the number of dimension of this array.

getPushedOnStack

public int getPushedOnStack()
Returns the size of data pushed on the stack by this instruction.
Overrides:
getPushedOnStack in class Instruction

getStack

public int getStack()
Return the amount of stack (positive or negative) used by this instruction.
Overrides:
getStack in class Instruction

getReturnType

public byte getReturnType()
Returns the type pushed on the stack.
Overrides:
getReturnType in class Instruction

write

void write(ConstantPool cp,
           java.io.DataOutput out)
     throws java.io.IOException
Write this instruction into a file.
Overrides:
write in class Instruction
Parameters:
cp - The constant pool that contain all data.
out - The file where to write this object info.
Throws:
java.io.IOException - An io problem has occured.