at.dms.classfile
Class NoArgInstruction

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

public class NoArgInstruction
extends Instruction

This class represents instructions that take no arguments. opc_dastore, opc_lastore, opc_aastore, opc_bastore, opc_castore, opc_dcmpg, opc_dcmpl, opc_fastore, opc_iastore, opc_lcmp, opc_sastore, opc_dadd, opc_ddiv, opc_dmul, opc_drem, opc_dreturn, opc_dsub, opc_ladd, opc_land, opc_ldiv, opc_lmul, opc_lor, opc_lrem, opc_lreturn, opc_lsub, opc_lxor, opc_pop2, opc_aaload, opc_areturn, opc_athrow, opc_baload, opc_caload, opc_d2f, opc_d2i, opc_fadd, opc_faload, opc_fcmpg, opc_fcmpl, opc_fdiv, opc_fmul, opc_frem, opc_freturn, opc_fsub, opc_iadd, opc_iaload, opc_iand, opc_idiv, opc_imul, opc_isub, opc_irem, opc_ishl, opc_ishr, opc_iushr, opc_ior, opc_ixor, opc_l2f, opc_l2i, opc_lshl, opc_lshr, opc_lushr, opc_monitorenter, opc_monitorexit, opc_pop, opc_saload, opc_ireturn, opc_nop, opc_arraylength, opc_d2l, opc_daload, opc_dneg, opc_f2i, opc_fneg, opc_i2b, opc_i2c, opc_i2f, opc_i2s, opc_ineg, opc_l2d, opc_laload, opc_lneg, opc_return, opc_swap, opc_aconst_null, opc_dup, opc_dup_x1, opc_dup_x2, opc_f2d, opc_f2l, opc_i2d, opc_i2l, opc_dup2, opc_dup2_x1, opc_dup2_x2


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
NoArgInstruction(int opcode)
          Constructs a new instruction that takes no arguments
 
Method Summary
 boolean canComplete()
          Returns true iff control flow can reach the next instruction in textual order.
(package private)  void check(CodeEnv env, int curStack)
          Verifies the enclosed instruction and computes the stack height.
 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.
 boolean isLiteral()
          Return true if this instruction is a literal
(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
computeEndAddress, dump, getAddress, getLocalVar, getOpcode, getPoppedFromStack, 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

NoArgInstruction

public NoArgInstruction(int opcode)
Constructs a new instruction that takes no arguments
Parameters:
opcode - the opcode of the instruction
Method Detail

canComplete

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

getSize

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

getReturnType

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

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

isLiteral

public boolean isLiteral()
Return true if this instruction is a literal
Overrides:
isLiteral in class Instruction

check

void check(CodeEnv env,
           int curStack)
     throws ClassFileFormatException
Verifies the enclosed instruction and computes the stack height.
Overrides:
check in class Instruction
Parameters:
env - The check environment.
curStack - The stack height at the end of the execution of the instruction.
Returns:
true iff the next instruction in textual order needs to be checked, i.e. this instruction has not been checked before and it can complete normally.
Throws:
ClassFileFormatException - A problem was detected.

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.

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.