at.dms.classfile
Class LocalVarInstruction

java.lang.Object
  extended by at.dms.classfile.AbstractInstructionAccessor
      extended by at.dms.classfile.Instruction
          extended by at.dms.classfile.LocalVarInstruction
All Implemented Interfaces:
Constants, InstructionAccessor

public class LocalVarInstruction
extends Instruction

This class represents instructions that take a local variable as argument. Shortcuts (single byte instructions) are created for the opcodes: iload, fload, aload, lload, dload, istore, fstore, astore, lstore, dstore if the variable index is 0, 1, 2 or 3. An extra wide prefix is automatically added for these instructions if the numeric argument is larger than 255.


Field Summary
static byte KND_LOAD
           
static byte KND_RET
           
static byte KND_STORE
           
 
Fields inherited from interface at.dms.classfile.Constants
ACC_ABSTRACT, ACC_FINAL, ACC_INLINE, ACC_INTERFACE, ACC_NATIVE, 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
LocalVarInstruction(int opcode, int index)
          Constructs a new instruction that takes a local variable as argument.
 
Method Summary
 boolean canComplete()
          Returns true iff control flow can reach the next instruction in textual order.
 int getIndex()
          Returns the position of the variable in the local var set
 byte getOperandType()
          Returns the type of the operand.
 byte getOperationKind()
          Returns the operation kind.
 int getPushedOnStack()
          Returns the size of data pushed on the stack by this instruction
 byte getReturnType()
          Returns the type pushed on the stack
 int getStack()
          Return the amount of stack (positive or negative) used by this instruction.
 boolean isLoad()
           
 boolean isStore()
           
 
Methods inherited from class at.dms.classfile.Instruction
dump, getOpcode, getPoppedFromStack, isLiteral
 
Methods inherited from class at.dms.classfile.AbstractInstructionAccessor
deepClone, deepCloneInto, transform
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

KND_LOAD

public static final byte KND_LOAD
See Also:
Constant Field Values

KND_STORE

public static final byte KND_STORE
See Also:
Constant Field Values

KND_RET

public static final byte KND_RET
See Also:
Constant Field Values
Constructor Detail

LocalVarInstruction

public LocalVarInstruction(int opcode,
                           int index)
Constructs a new instruction that takes a local variable as argument.

Parameters:
opcode - the opcode of the instruction
index - the index of the local variable
Method Detail

canComplete

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

Specified by:
canComplete in class Instruction

getIndex

public int getIndex()
Returns the position of the variable in the local var set


getReturnType

public byte getReturnType()
Returns the type pushed on the stack

Specified by:
getReturnType in class Instruction

getOperandType

public byte getOperandType()
Returns the type of the operand.


getOperationKind

public byte getOperationKind()
Returns the operation kind.


isLoad

public boolean isLoad()

isStore

public boolean isStore()

getPushedOnStack

public int getPushedOnStack()
Returns the size of data pushed on the stack by this instruction

Specified by:
getPushedOnStack in class Instruction

getStack

public int getStack()
Return the amount of stack (positive or negative) used by this instruction.

Specified by:
getStack in class Instruction