de.fub.bytecode.generic
Class InvokeInstruction

java.lang.Object
  |
  +--de.fub.bytecode.generic.Instruction
        |
        +--de.fub.bytecode.generic.CPInstruction
              |
              +--de.fub.bytecode.generic.FieldOrMethod
                    |
                    +--de.fub.bytecode.generic.InvokeInstruction
All Implemented Interfaces:
java.lang.Cloneable, Constants, ExceptionConstants, ExceptionThrower, LoadClass, java.io.Serializable
Direct Known Subclasses:
INVOKEINTERFACE, INVOKESPECIAL, INVOKESTATIC, INVOKEVIRTUAL

public abstract class InvokeInstruction
extends FieldOrMethod
implements ExceptionThrower

Super class for the INVOKExxx family of instructions.

Version:
$Id: InvokeInstruction.java,v 1.8 1999/09/22 13:00:11 dahm Exp $
Author:
M. Dahm
See Also:
Serialized Form

Fields inherited from class de.fub.bytecode.generic.CPInstruction
index
 
Fields inherited from class de.fub.bytecode.generic.Instruction
length, tag
 
Fields inherited from interface de.fub.bytecode.ExceptionConstants
ABSTRACT_METHOD_ERROR, ARITHMETIC_EXCEPTION, ARRAY_INDEX_OUT_OF_BOUNDS_EXCEPTION, CLASS_CAST_EXCEPTION, CLASS_CIRCULARITY_ERROR, CLASS_FORMAT_ERROR, EXCEPTION_IN_INITIALIZER_ERROR, EXCS_ARRAY_EXCEPTION, EXCS_CLASS_AND_INTERFACE_RESOLUTION, EXCS_FIELD_AND_METHOD_RESOLUTION, EXCS_INTERFACE_METHOD_RESOLUTION, EXCS_STRING_RESOLUTION, ILLEGAL_ACCESS_ERROR, ILLEGAL_MONITOR_STATE, INCOMPATIBLE_CLASS_CHANGE_ERROR, INSTANTIATION_ERROR, LINKING_EXCEPTION, NEGATIVE_ARRAY_SIZE_EXCEPTION, NO_CLASS_DEF_FOUND_ERROR, NO_SUCH_FIELD_ERROR, NO_SUCH_METHOD_ERROR, NULL_POINTER_EXCEPTION, RUNTIME_EXCEPTION, THROWABLE, UNSATISFIED_LINK_ERROR, VERIFY_ERROR
 
Fields inherited from interface de.fub.bytecode.Constants
AALOAD, AASTORE, ACC_ABSTRACT, ACC_FINAL, ACC_INTERFACE, ACC_NATIVE, ACC_PRIVATE, ACC_PROTECTED, ACC_PUBLIC, ACC_STATIC, ACC_SUPER, ACC_SYNCHRONIZED, ACC_TRANSIENT, ACC_VOLATILE, ACCESS_NAMES, ACONST_NULL, ALOAD, ALOAD_0, ALOAD_1, ALOAD_2, ALOAD_3, ANEWARRAY, ANEWARRAY_QUICK, ARETURN, ARRAYLENGTH, ASTORE, ASTORE_0, ASTORE_1, ASTORE_2, ASTORE_3, ATHROW, ATTR_CODE, ATTR_CONSTANT_VALUE, ATTR_DEPRECATED, ATTR_EXCEPTIONS, ATTR_INNER_CLASSES, ATTR_LINE_NUMBER_TABLE, ATTR_LOCAL_VARIABLE_TABLE, ATTR_PMG, ATTR_SIGNATURE, ATTR_SOURCE_FILE, ATTR_SYNTHETIC, ATTR_UNKNOWN, ATTRIBUTE_NAMES, BALOAD, BASTORE, BIPUSH, BREAKPOINT, CALOAD, CASTORE, CHECKCAST, CHECKCAST_QUICK, CONSTANT_Class, CONSTANT_Double, CONSTANT_Fieldref, CONSTANT_Float, CONSTANT_Integer, CONSTANT_InterfaceMethodref, CONSTANT_Long, CONSTANT_Methodref, CONSTANT_NameAndType, CONSTANT_NAMES, CONSTANT_String, CONSTANT_Utf8, CONSUME_STACK, D2F, D2I, D2L, DADD, DALOAD, DASTORE, DCMPG, DCMPL, DCONST_0, DCONST_1, DDIV, DLOAD, DLOAD_0, DLOAD_1, DLOAD_2, DLOAD_3, DMUL, DNEG, DREM, DRETURN, DSTORE, DSTORE_0, DSTORE_1, DSTORE_2, DSTORE_3, DSUB, DUP, DUP_X1, DUP_X2, DUP2, DUP2_X1, DUP2_X2, F2D, F2I, F2L, FADD, FALOAD, FASTORE, FCMPG, FCMPL, FCONST_0, FCONST_1, FCONST_2, FDIV, FLOAD, FLOAD_0, FLOAD_1, FLOAD_2, FLOAD_3, FMUL, FNEG, FREM, FRETURN, FSTORE, FSTORE_0, FSTORE_1, FSTORE_2, FSTORE_3, FSUB, GETFIELD, GETFIELD_QUICK, GETFIELD_QUICK_W, GETFIELD2_QUICK, GETSTATIC, GETSTATIC_QUICK, GETSTATIC2_QUICK, GOTO, GOTO_W, I2B, I2C, I2D, I2F, I2L, I2S, IADD, IALOAD, IAND, IASTORE, ICONST_0, ICONST_1, ICONST_2, ICONST_3, ICONST_4, ICONST_5, ICONST_M1, IDIV, IF_ACMPEQ, IF_ACMPNE, IF_ICMPEQ, IF_ICMPGE, IF_ICMPGT, IF_ICMPLE, IF_ICMPLT, IF_ICMPNE, IFEQ, IFGE, IFGT, IFLE, IFLT, IFNE, IFNONNULL, IFNULL, IINC, ILLEGAL_OPCODE, ILLEGAL_TYPE, ILOAD, ILOAD_0, ILOAD_1, ILOAD_2, ILOAD_3, IMPDEP1, IMPDEP2, IMUL, INEG, INSTANCEOF, INSTANCEOF_QUICK, INT2BYTE, INT2CHAR, INT2SHORT, INVOKEINTERFACE, INVOKEINTERFACE_QUICK, INVOKENONVIRTUAL, INVOKENONVIRTUAL_QUICK, INVOKESPECIAL, INVOKESTATIC, INVOKESTATIC_QUICK, INVOKESUPER_QUICK, INVOKEVIRTUAL, INVOKEVIRTUAL_QUICK, INVOKEVIRTUAL_QUICK_W, INVOKEVIRTUALOBJECT_QUICK, IOR, IREM, IRETURN, ISHL, ISHR, ISTORE, ISTORE_0, ISTORE_1, ISTORE_2, ISTORE_3, ISUB, IUSHR, IXOR, JSR, JSR_W, KNOWN_ATTRIBUTES, L2D, L2F, L2I, LADD, LALOAD, LAND, LASTORE, LCMP, LCONST_0, LCONST_1, LDC, LDC_QUICK, LDC_W, LDC_W_QUICK, LDC2_W, LDC2_W_QUICK, LDIV, LLOAD, LLOAD_0, LLOAD_1, LLOAD_2, LLOAD_3, LMUL, LNEG, LOOKUPSWITCH, LOR, LREM, LRETURN, LSHL, LSHR, LSTORE, LSTORE_0, LSTORE_1, LSTORE_2, LSTORE_3, LSUB, LUSHR, LXOR, MAJOR, MAJOR_1_1, MAJOR_1_2, MAX_ACC_FLAG, MAX_BYTE, MAX_SHORT, MINOR, MINOR_1_1, MINOR_1_2, MONITORENTER, MONITOREXIT, MULTIANEWARRAY, MULTIANEWARRAY_QUICK, NEW, NEW_QUICK, NEWARRAY, NO_OF_OPERANDS, NOP, OPCODE_NAMES, POP, POP2, PRODUCE_STACK, PUSH, PUTFIELD, PUTFIELD_QUICK, PUTFIELD_QUICK_W, PUTFIELD2_QUICK, PUTSTATIC, PUTSTATIC_QUICK, PUTSTATIC2_QUICK, RESERVED, RET, RETURN, SALOAD, SASTORE, SHORT_TYPE_NAMES, SIPUSH, SWAP, SWITCH, T_ARRAY, T_BOOLEAN, T_BYTE, T_CHAR, T_DOUBLE, T_FLOAT, T_INT, T_LONG, T_OBJECT, T_REFERENCE, T_SHORT, T_UNKNOWN, T_VOID, TABLESWITCH, TYPE_NAMES, TYPE_OF_OPERANDS, UNDEFINED, UNPREDICTABLE, WIDE
 
Constructor Summary
protected InvokeInstruction(short tag, int index)
           
 
Method Summary
 int consumeStack(ConstantPoolGen cpg)
          Also works for instructions whose stack effect depends on the constant pool entry they reference.
 Type[] getArgumentTypes(ConstantPoolGen cpg)
           
 java.lang.String getMethodName(ConstantPoolGen cpg)
           
 Type getReturnType(ConstantPoolGen cpg)
           
 Type getType(ConstantPoolGen cpg)
           
 int produceStack(ConstantPoolGen cpg)
          Also works for instructions whose stack effect depends on the constant pool entry they reference.
 java.lang.String toString(ConstantPool cp)
           
 
Methods inherited from class de.fub.bytecode.generic.FieldOrMethod
getClassName, getClassType, getName, getSignature
 
Methods inherited from class de.fub.bytecode.generic.CPInstruction
dump, getIndex, initFromFile, setIndex, toString
 
Methods inherited from class de.fub.bytecode.generic.Instruction
consumeStack, copy, getLength, getTag, produceStack, toString
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface de.fub.bytecode.generic.ExceptionThrower
getExceptions
 

Constructor Detail

InvokeInstruction

protected InvokeInstruction(short tag,
                            int index)
Parameters:
index - to constant pool
Method Detail

toString

public java.lang.String toString(ConstantPool cp)
Overrides:
toString in class CPInstruction
Returns:
mnemonic for instruction with symbolic references resolved

consumeStack

public int consumeStack(ConstantPoolGen cpg)
Also works for instructions whose stack effect depends on the constant pool entry they reference.
Overrides:
consumeStack in class Instruction
Returns:
Number of words consumed from stack by this instruction

produceStack

public int produceStack(ConstantPoolGen cpg)
Also works for instructions whose stack effect depends on the constant pool entry they reference.
Overrides:
produceStack in class Instruction
Returns:
Number of words produced onto stack by this instruction

getType

public Type getType(ConstantPoolGen cpg)
Overrides:
getType in class CPInstruction
Returns:
return type of referenced method.

getMethodName

public java.lang.String getMethodName(ConstantPoolGen cpg)
Returns:
name of referenced method.

getReturnType

public Type getReturnType(ConstantPoolGen cpg)
Returns:
return type of referenced method.

getArgumentTypes

public Type[] getArgumentTypes(ConstantPoolGen cpg)
Returns:
argument types of referenced method.