at.dms.kjc
Class CMethod

java.lang.Object
  |
  +--at.dms.util.Utils
        |
        +--at.dms.kjc.CMember
              |
              +--at.dms.kjc.CMethod
All Implemented Interfaces:
Constants, Constants
Direct Known Subclasses:
CBinaryMethod, CSourceMethod

public abstract class CMethod
extends CMember

This class represents a class method.


Fields inherited from class at.dms.kjc.CMember
ACCESSOR_PREFIX
 
Fields inherited from class at.dms.util.Utils
DBG_LEVEL_HIGH, DBG_LEVEL_LOW, DBG_LEVEL_NO
 
Fields inherited from interface at.dms.kjc.Constants
CMP_VERSION, JAV_CLASS, JAV_CLONE, JAV_CLONEABLE, JAV_CONSTRUCTOR, JAV_ERROR, JAV_EXCEPTION, JAV_INIT, JAV_LENGTH, JAV_NAME_SEPARATOR, JAV_OBJECT, JAV_OUTER_THIS, JAV_RUNTIME, JAV_RUNTIME_EXCEPTION, JAV_STATIC_INIT, JAV_STRING, JAV_STRINGBUFFER, JAV_THIS, JAV_THROWABLE, OPE_BAND, OPE_BNOT, OPE_BOR, OPE_BSR, OPE_BXOR, OPE_EQ, OPE_GE, OPE_GT, OPE_LE, OPE_LNOT, OPE_LT, OPE_MINUS, OPE_NE, OPE_PERCENT, OPE_PLUS, OPE_POSTDEC, OPE_POSTINC, OPE_PREDEC, OPE_PREINC, OPE_SIMPLE, OPE_SL, OPE_SLASH, OPE_SR, OPE_STAR, TID_ARRAY, TID_BOOLEAN, TID_BYTE, TID_CHAR, TID_CLASS, TID_DOUBLE, TID_FLOAT, TID_INT, TID_LONG, TID_SHORT, TID_VOID
 
Fields inherited from interface at.dms.classfile.Constants
ACC_ABSTRACT, ACC_FINAL, ACC_INTERFACE, ACC_NATIVE, ACC_NBR_FLAGS, ACC_PRIVATE, ACC_PROTECTED, ACC_PUBLIC, ACC_STATIC, ACC_STRICT, ACC_SUPER, ACC_SYNCHRONIZED, ACC_TRANSIENT, ACC_VOLATILE, ATT_CODE, ATT_CONSTANTVALUE, ATT_DEPRECATED, ATT_EXCEPTIONS, ATT_GENERIC, ATT_INNERCLASSES, ATT_LINENUMBERTABLE, ATT_LOCALVARIABLETABLE, ATT_SOURCEFILE, ATT_SYNTHETIC, 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_dup_x1, opc_dup_x2, opc_dup2, opc_dup2_x1, opc_dup2_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_ldc_w, opc_ldc2_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
CMethod(CClass owner, int modifiers, java.lang.String ident, CType returnType, CType[] parameters, CClassType[] exceptions, boolean deprecated)
          Constructs a method member.
 
Method Summary
 boolean equals(CMethod method)
          equals search if two methods have same signature
 void genCode(CodeSequence code, boolean nonVirtual)
          Generates a sequence of bytecode
 MethodInfo genMethodInfo()
          Generate the code in a class file
 CMethod getMethod()
           
 CType[] getParameters()
           
 CType getReturnType()
           
 java.lang.String getSignature()
           
 CClassType[] getThrowables()
           
 boolean isAbstract()
          Returns true iff this method is abstract.
 boolean isConstructor()
          Returns true iff this method is a constructor.
 boolean isMatching(java.lang.String ident, CType[] actuals)
          isMatching search if this matches with the provided type parameters
 boolean isMatchingParams(CType[] actuals)
          isMatching search if this matches with the provided type parameters
 boolean isMoreSpecificThan(CMethod other)
          isMoreSpecificThan search if this method is more specific than other
 boolean isNative()
          Returns true iff this method is native.
 void setThrowables(java.util.Set throwables)
          This method is used by initializers that knows throwables exceptions only after body was checked.
 java.lang.String toString()
           
 
Methods inherited from class at.dms.kjc.CMember
getCClass, getField, getIdent, getJavaName, getModifiers, getOwner, getPrefixName, getQualifiedName, isAccessible, isDeprecated, isFinal, isPrivate, isProtected, isPublic, isStatic, isSynthetic, mustUseAccessorMethod, setModifiers, setSynthetic
 
Methods inherited from class at.dms.util.Utils
assert, assert, fail, fail, hasFlag, hasMoreThanOneFlag, hasOtherFlags, splitQualifiedName, splitQualifiedName, vectorToArray, vectorToIntArray
 
Methods inherited from class java.lang.Object
, clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

CMethod

public CMethod(CClass owner,
               int modifiers,
               java.lang.String ident,
               CType returnType,
               CType[] parameters,
               CClassType[] exceptions,
               boolean deprecated)
Constructs a method member.
Parameters:
owner - the owner of this method
modifiers - the modifiers on this method
ident - the ident of this method
returnType - the return type of this method
parameters - the parameters type of this method
exceptions - a list of all exceptions of the throws list
deprecated - is this method deprecated
Method Detail

getMethod

public CMethod getMethod()
Overrides:
getMethod in class CMember
Returns:
the interface

getReturnType

public final CType getReturnType()
Returns:
the type of this field

getParameters

public final CType[] getParameters()
Returns:
the type of this field

getSignature

public java.lang.String getSignature()
Returns:
the type of this field

getThrowables

public CClassType[] getThrowables()
Returns:
the exceptions that can be thrown by this method

setThrowables

public void setThrowables(java.util.Set throwables)
This method is used by initializers that knows throwables exceptions only after body was checked.
Parameters:
throwables - the exceptions that can be thrown by this method

isNative

public boolean isNative()
Returns true iff this method is native.

isAbstract

public boolean isAbstract()
Returns true iff this method is abstract.

isConstructor

public boolean isConstructor()
Returns true iff this method is a constructor.

equals

public boolean equals(CMethod method)
equals search if two methods have same signature
Parameters:
params - an other method

isMatching

public boolean isMatching(java.lang.String ident,
                          CType[] actuals)
isMatching search if this matches with the provided type parameters
Parameters:
actuals - method parameters

isMatchingParams

public boolean isMatchingParams(CType[] actuals)
isMatching search if this matches with the provided type parameters
Parameters:
actuals - method parameters

isMoreSpecificThan

public boolean isMoreSpecificThan(CMethod other)
isMoreSpecificThan search if this method is more specific than other
Parameters:
other - the method to compare to
Returns:
true if this method is more specific than other

toString

public java.lang.String toString()
Overrides:
toString in class java.lang.Object

genCode

public void genCode(CodeSequence code,
                    boolean nonVirtual)
Generates a sequence of bytecode
Parameters:
code - the code sequence
nonVirtual - force non-virtual dispatching

genMethodInfo

public MethodInfo genMethodInfo()
Generate the code in a class file