mjc

org.multijava.util.classfile
Class MethodRefInstruction

java.lang.Object
  extended byorg.multijava.util.classfile.AbstractInstructionAccessor
      extended byorg.multijava.util.classfile.Instruction
          extended byorg.multijava.util.classfile.MethodRefInstruction
All Implemented Interfaces:
Constants, InstructionAccessor

public class MethodRefInstruction
extends Instruction

Instruction that references method opc_invokevirtual,_invokespecial, opc_invokestatic


Field Summary
private  MethodRefConstant method
           
 
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
MethodRefInstruction(int opcode, String name, String type)
          Constructs a new method reference instruction
MethodRefInstruction(int opcode, String owner, String name, String type)
          Constructs a new method reference instruction
MethodRefInstruction(int opcode, MethodRefConstant method)
          Constructs a new method reference instruction from a class file
 
Method Summary
 boolean canComplete()
          Returns true iff control flow can reach the next instruction in textual order.
 MethodRefConstant getMethodRefConstant()
          Returns the method reference constant used by this instruction
 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
(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
check, computeEndAddress, dump, getAddress, getLocalVar, getOpcode, getPoppedFromStack, isLiteral, setAddress, setOpcode
 
Methods inherited from class org.multijava.util.classfile.AbstractInstructionAccessor
transform
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

method

private MethodRefConstant method
Constructor Detail

MethodRefInstruction

public MethodRefInstruction(int opcode,
                            String name,
                            String type)
Constructs a new method reference instruction

Parameters:
opcode - the opcode of the instruction
name - the qualified name of the referenced object
type - the signature of the referenced object

MethodRefInstruction

public MethodRefInstruction(int opcode,
                            String owner,
                            String name,
                            String type)
Constructs a new method reference instruction

Parameters:
opcode - the opcode of the instruction
name - the qualified name of the referenced object
type - the signature of the referenced object

MethodRefInstruction

public MethodRefInstruction(int opcode,
                            MethodRefConstant method)
Constructs a new method reference instruction from a class file

Parameters:
opcode - the opcode of the instruction
method - the method reference (as pooled constant)
Method Detail

canComplete

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


resolveConstants

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

Parameters:
cp - the constant pool for this class

getSize

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


getMethodRefConstant

public MethodRefConstant getMethodRefConstant()
Returns the method reference constant used by this instruction


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


write

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

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

mjc

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.