at.dms.kjc
Class CClassType

java.lang.Object
  extended by at.dms.util.Utils
      extended by at.dms.kjc.CType
          extended by at.dms.kjc.CClassType
All Implemented Interfaces:
Constants, DeepCloneable, Serializable
Direct Known Subclasses:
CArrayType, CClassNameType, CNullType

public class CClassType
extends CType

This class represents class type in the type structure

See Also:
Serialized Form

Field Summary
static CClassType[] EMPTY
           
 
Fields inherited from class at.dms.kjc.CType
instance, type
 
Fields inherited from class at.dms.util.Utils
EMPTY_LIST, getForLoopCallers
 
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_BIT, TID_BOOLEAN, TID_BYTE, TID_CHAR, TID_CLASS, TID_DOUBLE, TID_FLOAT, TID_INT, TID_LONG, TID_SHORT, TID_VECTOR, TID_VOID, VECTOR_EMPTY
 
Fields inherited from interface at.dms.classfile.Constants
ACC_ABSTRACT, ACC_FINAL, ACC_INLINE, ACC_INTERFACE, ACC_NATIVE, 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
protected CClassType()
          Construct a class type
  CClassType(CClass clazz)
          Construct a class type
 
Method Summary
protected  void appendSignature(SimpleStringBuffer buffer)
          Appends the VM signature of this type to the specified buffer.
 void checkType(CContext context)
          check that type is valid necessary to resolve String into java/lang/String
 Object deepClone()
          Returns a deep clone of this object.
protected  void deepCloneInto(CClassType other)
          Clones all fields of this into
 boolean equals(CType other)
          equals
 CClass getCClass()
          Returns the class object associated with this type If this type was never checked (read from class files) check it!
 String getIdent()
           
 String getQualifiedName()
           
 int getSize()
          Returns the stack size used by a value of this type.
 int getSizeInC()
          Returns the stack size (conservative estimate of maximum number of bytes needed in C on 32-bit machine) used by a value of this type.
static void init(Compiler compiler)
           
 boolean isAssignableTo(CType dest)
          Can this type be converted to the specified type by assignment conversion (JLS 5.2) ?
 boolean isCastableTo(CType dest)
          Can this type be converted to the specified type by casting conversion (JLS 5.5) ?
protected  boolean isChecked()
           
 boolean isCheckedException()
           
 boolean isClassType()
          Check if a type is a class type
 boolean isReference()
          Check if a type is a reference
static CClassType lookup(String qualifiedName)
           
 void setClass(CClass clazz)
           
 String toString()
          Transforms this type to a string
 
Methods inherited from class at.dms.kjc.CType
checked, deepCloneInto, genMethodSignature, getArrayLoadOpcode, getArrayStoreOpcode, getLoadOpcode, getReturnOpcode, getSignature, getStoreOpcode, getTypeID, isArrayType, isFloatingPoint, isNumeric, isOrdinal, isPrimitive, parseMethodSignature, parseSignature
 
Methods inherited from class at.dms.util.Utils
asPercent, cellMathEquivalent, cMathEquivalent, cppMathEquivalent, deepCloneInto, equalArrays, fail, getEnvironmentVariable, getExpression, hasPeeks, initArray, initArray, initLiteralArray, intArrayToList, isMathMethod, isUniform, kopi_assert, kopi_assert, makeCountdownForLoop, makeDotFileName, makeForLoop, makeForLoop, makeForLoop, makeForLoopFieldIndex, makeForLoopLocalIndex, nextPow2, passThruParens, peelMarkers, popBeforePeek, readFile, removeUnusedPops, replaceAll, setupDotFileName, simplifyMathMethod, splitQualifiedName, splitQualifiedName, toArray, toIntArray, toVector, voidToInt, writeFile
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

EMPTY

public static final CClassType[] EMPTY
Constructor Detail

CClassType

protected CClassType()
Construct a class type


CClassType

public CClassType(CClass clazz)
Construct a class type

Parameters:
clazz - the class that will represent this type
Method Detail

lookup

public static CClassType lookup(String qualifiedName)

isChecked

protected boolean isChecked()

setClass

public void setClass(CClass clazz)

equals

public boolean equals(CType other)
equals

Overrides:
equals in class CType

toString

public String toString()
Transforms this type to a string

Specified by:
toString in class CType

appendSignature

protected void appendSignature(SimpleStringBuffer buffer)
Appends the VM signature of this type to the specified buffer.

Specified by:
appendSignature in class CType

getIdent

public String getIdent()
Returns:
the short name of this class

getQualifiedName

public String getQualifiedName()

getSizeInC

public int getSizeInC()
Returns the stack size (conservative estimate of maximum number of bytes needed in C on 32-bit machine) used by a value of this type.

Specified by:
getSizeInC in class CType

getSize

public int getSize()
Returns the stack size used by a value of this type.

Specified by:
getSize in class CType

isReference

public boolean isReference()
Check if a type is a reference

Overrides:
isReference in class CType
Returns:
is it a type that accept null value

isClassType

public boolean isClassType()
Check if a type is a class type

Overrides:
isClassType in class CType
Returns:
is it a subtype of ClassType ?

getCClass

public CClass getCClass()
Returns the class object associated with this type If this type was never checked (read from class files) check it!

Overrides:
getCClass in class CType
Returns:
the class object associated with this type

checkType

public void checkType(CContext context)
               throws UnpositionedError
check that type is valid necessary to resolve String into java/lang/String

Specified by:
checkType in class CType
Parameters:
context - the context (may be be null)
Throws:
UnpositionedError - this error will be positioned soon

isAssignableTo

public boolean isAssignableTo(CType dest)
Can this type be converted to the specified type by assignment conversion (JLS 5.2) ?

Specified by:
isAssignableTo in class CType
Parameters:
dest - the destination type
Returns:
true iff the conversion is valid

isCastableTo

public boolean isCastableTo(CType dest)
Can this type be converted to the specified type by casting conversion (JLS 5.5) ?

Specified by:
isCastableTo in class CType
Parameters:
dest - the destination type
Returns:
true iff the conversion is valid

isCheckedException

public boolean isCheckedException()
Overrides:
isCheckedException in class CType
Returns:
true if this type corrspond to a checked exception

init

public static void init(Compiler compiler)

deepClone

public Object deepClone()
Returns a deep clone of this object.

Specified by:
deepClone in interface DeepCloneable
Overrides:
deepClone in class CType

deepCloneInto

protected void deepCloneInto(CClassType other)
Clones all fields of this into
other