Class NoArgInstruction

  extended byorg.multijava.util.classfile.AbstractInstructionAccessor
      extended byorg.multijava.util.classfile.Instruction
          extended byorg.multijava.util.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

Field Summary
Fields inherited from class org.multijava.util.classfile.Instruction
Fields inherited from interface org.multijava.util.classfile.Constants
ACC_ABSTRACT, ACC_FINAL, ACC_INTERFACE, ACC_NATIVE, ACC_PRIVATE, ACC_PROTECTED, ACC_PUBLIC, ACC_STATIC, ACC_STRICT, ACC_SUPER, ACC_SYNCHRONIZED, ACC_SYNTHETIC, ACC_TRANSIENT, ACC_VOLATILE, ACCESS_FLAG_ARRAY, ACCESS_FLAG_NAMES, ATT_ANCHOR, ATT_BRIDGE, ATT_CODE, ATT_CONSTANTVALUE, ATT_DEPRECATED, ATT_DISPATCHER, ATT_EXCEPTIONS, ATT_GENERIC, ATT_GENERIC_FUNCTIONS, ATT_INNERCLASSES, ATT_LINENUMBERTABLE, ATT_LOCALVARIABLETABLE, ATT_MM_BODY, ATT_REDIRECTOR, ATT_RMJ_GLUE, ATT_RMJ_SIGNATURE, ATT_RUNTIME_VISIBLE_ANNOTATIONS, ATT_RUNTIME_VISIBLE_PARAMETER_ANNOTATIONS, ATT_SIGNATURE, ATT_SOURCEFILE, ATT_SYNTHETIC, ATT_UNIVERSE_FIELD, ATT_UNIVERSE_METHOD, ATT_UNIVERSE_VERSION, 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_dup2, opc_dup2_x1, opc_dup2_x2, opc_dup_x1, opc_dup_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_ldc2_w, opc_ldc_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, DataOutput out)
          Write this instruction into a file
Methods inherited from class org.multijava.util.classfile.Instruction
computeEndAddress, dump, getAddress, getLocalVar, getOpcode, getPoppedFromStack, setAddress, setOpcode
Methods inherited from class org.multijava.util.classfile.AbstractInstructionAccessor
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Constructor Detail


public NoArgInstruction(int opcode)
Constructs a new instruction that takes no arguments

opcode - the opcode of the instruction
Method Detail


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


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


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


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


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


public boolean isLiteral()
Return true if this instruction is a literal

isLiteral in class Instruction


void check(CodeEnv env,
           int curStack)
     throws ClassFileFormatException
Verifies the enclosed instruction and computes the stack height.

check in class Instruction
env - the check environment
curStack - the stack height at the end of the execution of the instruction
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
ClassFileFormatException - a problem was detected


void resolveConstants(ConstantPool cp)
Insert or check location of constant value on constant pool

cp - the constant pool for this class


void write(ConstantPool cp,
           DataOutput out)
     throws IOException
Write this instruction into a file

cp - the constant pool that contain all data
out - the file where to write this object info
IOException - an io problem has occured


JML is Copyright (C) 1998-2002 by Iowa State University and is distributed under the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This release depends on code from the MultiJava project and is based in part on the Kopi project Copyright (C) 1990-99 DMS Decision Management Systems Ges.m.b.H.