mjc

org.multijava.util.classfile
Class MethodInfo

java.lang.Object
  extended byorg.multijava.util.classfile.Member
      extended byorg.multijava.util.classfile.MethodInfo
All Implemented Interfaces:
Comparable, Constants
Direct Known Subclasses:
CMethodInfo, MultimethodInfo

public class MethodInfo
extends Member

VMS 4.6: Methods Each method, and each (class or instance) initialization method is described by this structure.


Field Summary
protected  AttributeList attributes
           
private  AsciiConstant name
           
private  AsciiConstant type
           
 
Fields inherited from class org.multijava.util.classfile.Member
 
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
MethodInfo(DataInput in, ConstantPool cp, boolean interfaceOnly)
          Constructs a method entry from a class file stream
MethodInfo(short modifiers, String name, String type, String genericsignature, String[] exceptions, CodeInfo code, boolean deprecated, boolean synthetic)
          Constructs a method entry
 
Method Summary
 void addAttribute(Attribute attr)
          Adds the given custom attribute to the attribute list of this, replacing any existing attribute of the same kind.
private static boolean containsUniverseAnnotation(RuntimeVisibleAnnotationsAttribute attr)
          Returns whether the given annotations attribute of the method contains Universe annotations for the purity or the return type of the method.
private static boolean containsUniverseAnnotation(RuntimeVisibleParameterAnnotationsAttribute pattr)
          Returns whether the given annotations attribute of the method contains Universe annotations for any of the parameter types.
 CodeInfo getCodeInfo()
          Returns the code attribute associated with this method
 String[] getExceptions()
          Returns the exceptions of this method
 String getGenericSignature()
           
 String getName()
          Returns the name of this method
protected  int getParameterCount()
          Computes the number of parameters.
 String getSignature()
          Returns the type of the this method
 CUniverseMethodAnnotation getUniverseAnnotation()
          Return this method's universe annotation, or null if no annotation is present.
 boolean hasSyntheticReceiver()
          Returns true if the method represented by this has a synthetic receiver parameter (in the first parameter position).
 boolean isDeprecated()
          Returns true if the field is deprecated
 boolean isDispatcher()
          Returns true if the method represented by this is a compiler-generated multimethod dispatcher.
 boolean isMultimethodBody()
          Returns true if the method represented by this is a compiler-generated multimethod body.
 boolean isRedirector()
          Returns true if the method represented by this is a compiler-generated pleomorphic method redirector.
 boolean isSynthetic()
          Returns true if the field is synthetic
 void resolveConstants(ConstantPool cp)
          Insert or check location of constant value on constant pool
 void setCodeInfo(CodeInfo info)
          Sets the code attribute associated with this method
 void setDeprecated(boolean deprecated)
          Sets the deprecated attribute of this field
 void setExceptions(String[] exceptions)
          Sets the exceptions
 void setGenericSignature(String type)
           
 void setName(String name)
          Sets the name of the this method
 void setSignature(String type)
          Returns the type of the this method
 void setSynthetic(boolean synthetic)
          Returns true if the field is synthetic
 void write(ConstantPool cp, DataOutput out)
          Write this class into the the file (out) getting data position from the constant pool
 
Methods inherited from class org.multijava.util.classfile.Member
compareTo, equals, getModifiers, hashCode, setModifiers, toString
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 

Field Detail

name

private AsciiConstant name

type

private AsciiConstant type

attributes

protected final AttributeList attributes
Constructor Detail

MethodInfo

public MethodInfo(short modifiers,
                  String name,
                  String type,
                  String genericsignature,
                  String[] exceptions,
                  CodeInfo code,
                  boolean deprecated,
                  boolean synthetic)
Constructs a method entry

Parameters:
modifiers - access permission to and properties of the method
name - the simple name of the method (or or )
type - the method signature
exceptions - the checked exceptions the method may throw
code - the virtual machine instructions and auxiliary infos
deprecated - is this method deprecated ?
synthetic - is this method synthesized by the compiler ? NOTE: VMS 4.7.5: There must be exactly one Exceptions attribute in each method_info structure.

MethodInfo

public MethodInfo(DataInput in,
                  ConstantPool cp,
                  boolean interfaceOnly)
           throws IOException,
                  ClassFileFormatException
Constructs a method entry from a class file stream

Parameters:
in - the stream to read from
cp - the constant pool
interfaceOnly - load only the interface, not the source code
Throws:
IOException - an io problem has occured
ClassFileFormatException - attempt to write a bad classfile info
Method Detail

getName

public String getName()
Returns the name of this method


setName

public void setName(String name)
Sets the name of the this method


getSignature

public String getSignature()
Returns the type of the this method


getGenericSignature

public String getGenericSignature()

setGenericSignature

public void setGenericSignature(String type)

setSignature

public void setSignature(String type)
Returns the type of the this method


getExceptions

public String[] getExceptions()
Returns the exceptions of this method


setExceptions

public void setExceptions(String[] exceptions)
Sets the exceptions


isDeprecated

public boolean isDeprecated()
Returns true if the field is deprecated


setDeprecated

public void setDeprecated(boolean deprecated)
Sets the deprecated attribute of this field


isSynthetic

public boolean isSynthetic()
Returns true if the field is synthetic


setSynthetic

public void setSynthetic(boolean synthetic)
Returns true if the field is synthetic


getCodeInfo

public CodeInfo getCodeInfo()
Returns the code attribute associated with this method


setCodeInfo

public void setCodeInfo(CodeInfo info)
Sets the code attribute associated with this method


isMultimethodBody

public boolean isMultimethodBody()
Returns true if the method represented by this is a compiler-generated multimethod body.


isDispatcher

public boolean isDispatcher()
Returns true if the method represented by this is a compiler-generated multimethod dispatcher.


isRedirector

public boolean isRedirector()
Returns true if the method represented by this is a compiler-generated pleomorphic method redirector.


hasSyntheticReceiver

public boolean hasSyntheticReceiver()
Returns true if the method represented by this has a synthetic receiver parameter (in the first parameter position).


getUniverseAnnotation

public CUniverseMethodAnnotation getUniverseAnnotation()
Return this method's universe annotation, or null if no annotation is present. By AHS.


containsUniverseAnnotation

private static boolean containsUniverseAnnotation(RuntimeVisibleAnnotationsAttribute attr)
Returns whether the given annotations attribute of the method contains Universe annotations for the purity or the return type of the method.

Parameters:
attr - The annotations attribute which may contain Universe annotations.
Returns:
Whether the given attribute contains Universe annotations.

containsUniverseAnnotation

private static boolean containsUniverseAnnotation(RuntimeVisibleParameterAnnotationsAttribute pattr)
Returns whether the given annotations attribute of the method contains Universe annotations for any of the parameter types.

Parameters:
pattr - The annotations attribute which may contain Universe annotations.
Returns:
Whether the given attribute contains Universe annotations.

addAttribute

public void addAttribute(Attribute attr)
Adds the given custom attribute to the attribute list of this, replacing any existing attribute of the same kind.


resolveConstants

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

Parameters:
cp - the constant pool for this class
Throws:
ClassFileFormatException

write

public void write(ConstantPool cp,
                  DataOutput out)
           throws IOException,
                  ClassFileFormatException
Write this class into the the file (out) getting data position from the constant pool

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
ClassFileFormatException - attempt to write a bad classfile info

getParameterCount

protected int getParameterCount()
Computes the number of parameters.


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.