org.multijava.util.classfile
Class NoArgInstruction
java.lang.Object
org.multijava.util.classfile.AbstractInstructionAccessor
org.multijava.util.classfile.Instruction
org.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
| 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 java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
NoArgInstruction
public NoArgInstruction(int opcode)
- Constructs a new instruction that takes no arguments
- Parameters:
opcode - the opcode of the instruction
canComplete
public boolean canComplete()
- Returns true iff control flow can reach the next instruction
in textual order.
getSize
int getSize()
- Returns the number of bytes used by the the instruction in the code array.
getReturnType
public byte getReturnType()
- Returns the type pushed on the stack
getPushedOnStack
public int getPushedOnStack()
- Returns the size of data pushed on the stack by this instruction
getStack
public int getStack()
- Return the amount of stack (positive or negative) used by this 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 environmentcurStack - 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
- Parameters:
cp - the constant pool for this class
write
void write(ConstantPool cp,
DataOutput out)
throws IOException
- Write this instruction into a file
- Parameters:
cp - the constant pool that contain all dataout - the file where to write this object info
- Throws:
IOException - an io problem has occured
mjc is Copyright (C) 2000-2004 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. mjc is based in part on the Kopi project Copyright (C) 1990-99 DMS Decision Management Systems Ges.m.b.H.