at.dms.kjc
Class CSourceClass

java.lang.Object
  extended by at.dms.util.Utils
      extended by at.dms.kjc.CMember
          extended by at.dms.kjc.CClass
              extended by at.dms.kjc.CSourceClass
All Implemented Interfaces:
Constants, DeepCloneable, Serializable

public class CSourceClass
extends CClass

This class represents the exported members of a class (inner classes, methods and fields) It is build from a parsed files so values are accessibles differently after build and after interface checked

See Also:
Serialized Form

Field Summary
 
Fields inherited from class at.dms.kjc.CClass
CLS_UNDEFINED
 
Fields inherited from class at.dms.kjc.CMember
owner
 
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 CSourceClass()
           
  CSourceClass(CClass owner, TokenReference where, int modifiers, String ident, String qualifiedName, boolean deprecated)
          Constructs a class export from source
 
Method Summary
 void close(CClassType[] interfaces, CClassType superClass, Hashtable<String,CField> fields, CMethod[] methods)
          Ends the definition of this class
 Object deepClone()
          Returns a deep clone of this object.
protected  void deepCloneInto(CSourceClass other)
          Clones all fields of this into
 void genCode(BytecodeOptimizer optimizer, String destination)
          Generates a JVM class file for this class.
 CType[] genConstructorArray(CType[] params)
          add synthetic parameters to method def
 void genInit(CodeSequence code, int countLocals)
          add synthetic parameters to method def
 void genOuterSyntheticParams(CodeSequence code)
          add synthetic parameters to method call
 JExpression getOuterLocalAccess(TokenReference ref, JLocalVariable var, CMethod constructor)
          Gets the code to access outer local vars
static String varName(JLocalVariable var)
          Naming of variables abstracted away
 
Methods inherited from class at.dms.kjc.CClass
addField, close, collectApplicableMethods, deepCloneInto, descendsFrom, genSyntheticParamsFromExplicitSuper, getAbstractMethods, getApplicableMethods, getCClass, getField, getFieldCount, getFields, getIdent, getImplementingMethod, getInnerClasses, getInterfaces, getMethods, getPackage, getQualifiedName, getRawFields, getSourceFile, getSuperClass, getType, hasOuterThis, isAbstract, isAccessible, isAnonymous, isClass, isDefinedInside, isInterface, isNested, isQualifiedAndAnonymous, lookupClass, lookupField, lookupMethod, lookupSuperField, lookupSuperMethod, setHasOuterThis, setInnerClasses, setQualifiedAndAnonymous, setSuperClass, setType, toString
 
Methods inherited from class at.dms.kjc.CMember
deepCloneInto, getField, getIdent, getJavaName, getMethod, getModifiers, getOwner, getPrefixName, isDeprecated, isFinal, isPrivate, isProtected, isPublic, isStatic, setModifiers
 
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
 

Constructor Detail

CSourceClass

protected CSourceClass()

CSourceClass

public CSourceClass(CClass owner,
                    TokenReference where,
                    int modifiers,
                    String ident,
                    String qualifiedName,
                    boolean deprecated)
Constructs a class export from source

Method Detail

close

public void close(CClassType[] interfaces,
                  CClassType superClass,
                  Hashtable<String,CField> fields,
                  CMethod[] methods)
Ends the definition of this class


genConstructorArray

public CType[] genConstructorArray(CType[] params)
add synthetic parameters to method def

Overrides:
genConstructorArray in class CClass

genOuterSyntheticParams

public void genOuterSyntheticParams(CodeSequence code)
add synthetic parameters to method call

Overrides:
genOuterSyntheticParams in class CClass

varName

public static String varName(JLocalVariable var)
Naming of variables abstracted away


getOuterLocalAccess

public JExpression getOuterLocalAccess(TokenReference ref,
                                       JLocalVariable var,
                                       CMethod constructor)
Gets the code to access outer local vars


genInit

public void genInit(CodeSequence code,
                    int countLocals)
add synthetic parameters to method def


genCode

public void genCode(BytecodeOptimizer optimizer,
                    String destination)
             throws IOException,
                    ClassFileFormatException
Generates a JVM class file for this class.

Parameters:
optimizer - the bytecode optimizer to use
destination - the root directory of the class hierarchy
Throws:
IOException
ClassFileFormatException

deepClone

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

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

deepCloneInto

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