at.dms.kjc
Class CCompilationUnitContext

java.lang.Object
  |
  +--at.dms.util.Utils
        |
        +--at.dms.kjc.CContext
              |
              +--at.dms.kjc.CCompilationUnitContext
All Implemented Interfaces:
Constants, Constants
Direct Known Subclasses:
CEmptyTopLevelContext

public class CCompilationUnitContext
extends CContext

This class represents a local context during checkBody. It follows the control flow and maintain informations about variable (initialized, used, allocated) and exceptions (thrown, catched.) It also verify that context is still reachable. There is a set of utilities method to access fields, methods and class with the name by clamping the parsing tree.

See Also:
CContext, CCompilationUnitContext, CClassContext, CMethodContext, CBodyContext, CBlockContext

Fields inherited from class at.dms.kjc.CContext
cunit, parent
 
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
(package private) CCompilationUnitContext(Compiler compiler, CCompilationUnit cunit)
          Construct a compilation unit context.
(package private) CCompilationUnitContext(Compiler compiler, CCompilationUnit cunit, java.util.List classes)
          Construct a compilation unit context.
 
Method Summary
 void addSourceClass(CSourceClass clazz)
          Adds a class to generate
 CClassContext createClassContext(CSourceClass clazz)
           
 CBlockContext getBlockContext()
          Returns the nearest block context.
 CClassContext getClassContext()
          getClass
 CCompilationUnitContext getCompilationUnit()
           
 Compiler getCompiler()
          Gets the compiler
 int getFieldInfo(CField field)
           
 CMethodContext getMethod()
          getMethod
 CContext getParentContext()
          getParentContext
 int getVariableInfo(JLocalVariable variable)
           
 CClassType lookupClass(java.lang.String name)
          Search for a class with the provided name.
 void reportTrouble(PositionedError trouble)
          Add an error into the list and eat it This method should be called after a try catch block after catching exception or directly without exception thrown.
 
Methods inherited from class at.dms.kjc.CContext
addFieldInfo, check, check, check, fail, getFieldInfo, getMethodContext, lookupField, lookupLocalVariable, lookupMethod
 
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, toString, wait, wait, wait
 

Constructor Detail

CCompilationUnitContext

CCompilationUnitContext(Compiler compiler,
                        CCompilationUnit cunit)
Construct a compilation unit context.

CCompilationUnitContext

CCompilationUnitContext(Compiler compiler,
                        CCompilationUnit cunit,
                        java.util.List classes)
Construct a compilation unit context.
Method Detail

getFieldInfo

public int getFieldInfo(CField field)
Parameters:
field - the definition of a field
Returns:
a field from a field definition in current context

getVariableInfo

public int getVariableInfo(JLocalVariable variable)
Parameters:
var - the definition of a variable
Returns:
a variable info from a variable definition in current context

lookupClass

public CClassType lookupClass(java.lang.String name)
                       throws UnpositionedError
Description copied from class: CContext
Search for a class with the provided name.
Overrides:
lookupClass in class CContext
Returns:
a class according to imports or null if error occur
Throws:
UnpositionedError - this error will be positioned soon

getParentContext

public CContext getParentContext()
getParentContext
Overrides:
getParentContext in class CContext
Returns:
the parent

getClassContext

public CClassContext getClassContext()
getClass
Overrides:
getClassContext in class CContext
Returns:
the near parent of type CClassContext

getMethod

public CMethodContext getMethod()
getMethod
Returns:
the near parent of type CMethodContext

getCompilationUnit

public CCompilationUnitContext getCompilationUnit()
Overrides:
getCompilationUnit in class CContext
Returns:
the compilation unit

getBlockContext

public CBlockContext getBlockContext()
Description copied from class: CContext
Returns the nearest block context.
Overrides:
getBlockContext in class CContext

createClassContext

public CClassContext createClassContext(CSourceClass clazz)

reportTrouble

public void reportTrouble(PositionedError trouble)
Add an error into the list and eat it This method should be called after a try catch block after catching exception or directly without exception thrown.
Overrides:
reportTrouble in class CContext
Parameters:
error - the error

getCompiler

public Compiler getCompiler()
Gets the compiler
Overrides:
getCompiler in class CContext

addSourceClass

public void addSourceClass(CSourceClass clazz)
Adds a class to generate
Overrides:
addSourceClass in class CContext