at.dms.kjc
Class CSwitchBodyContext

java.lang.Object
  |
  +--at.dms.util.Utils
        |
        +--at.dms.kjc.CContext
              |
              +--at.dms.kjc.CAbstractBodyContext
                    |
                    +--at.dms.kjc.CSwitchBodyContext
All Implemented Interfaces:
Constants, Constants

public class CSwitchBodyContext
extends CAbstractBodyContext

Specialized local context during checkBody inside a switch self.

See Also:
CCompilationUnitContext, CClassContext, CMethodContext, CContext

Fields inherited from class at.dms.kjc.CAbstractBodyContext
fieldInfo, FLOW_BREAKED, FLOW_CONTINUED, FLOW_INLOOP, FLOW_INSWITCH, FLOW_UNREACHABLE, flowState, throwables, variableInfo
 
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
CSwitchBodyContext(JSwitchStatement self, CBodyContext parent, CType switchType)
          Construct a block context, it supports local variable allocation throw self and return self.
 
Method Summary
 void addDefault()
          Add a default label to this switch.
protected  void addForwardedBreak(JStatement breakTo, CBodyContext from)
          Adds a break from within this context to the specified self.
 void addLabel(JOrdinalLiteral lit)
          Add a label to this switch and check it is a new one.
 void close()
          close.
 boolean defaultExists()
           
 JStatement getNearestBreakableStatement()
          remove a label from the list of caseLabels
 
Methods inherited from class at.dms.kjc.CAbstractBodyContext
addBreak, addBreak, addContinue, addContinue, addFieldInfo, addForwardedContinue, addReturn, addThrowable, addThrowables, addVariableInfo, close, getFieldInfo, getFlowState, getLabeledStatement, getMaxLocalsPosition, getNearestContinuableStatement, getThrowables, getVariableInfo, informParent, isBreaked, isContinued, isInLoop, isReachable, lookupField, lookupLocalVariable, lookupOuterLocalVariable, setFieldInfo, setReachable, setVariableInfo
 
Methods inherited from class at.dms.kjc.CContext
addSourceClass, check, check, check, fail, getBlockContext, getClassContext, getCompilationUnit, getCompiler, getMethodContext, getParentContext, lookupClass, lookupMethod, reportTrouble
 
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

CSwitchBodyContext

public CSwitchBodyContext(JSwitchStatement self,
                          CBodyContext parent,
                          CType switchType)
Construct a block context, it supports local variable allocation throw self and return self.
Parameters:
parent - The parent context, it must be different from null except if called by the top level.
switchType - the type of switch (byte, short, char, int)
Method Detail

close

public void close()
close.

addForwardedBreak

protected void addForwardedBreak(JStatement breakTo,
                                 CBodyContext from)
                          throws PositionedError
Adds a break from within this context to the specified self.
Overrides:
addForwardedBreak in class CAbstractBodyContext

addDefault

public void addDefault()
                throws UnpositionedError
Add a default label to this switch.
Throws:
UnpositionedError - This error will be positioned soon.

addLabel

public void addLabel(JOrdinalLiteral lit)
              throws UnpositionedError
Add a label to this switch and check it is a new one.
Parameters:
lit - The literal value of this label.
Throws:
UnpositionedError - This error will be positioned soon.

defaultExists

public boolean defaultExists()
Returns:
true is a default label has already happen

getNearestBreakableStatement

public JStatement getNearestBreakableStatement()
remove a label from the list of caseLabels
Overrides:
getNearestBreakableStatement in class CAbstractBodyContext
Parameters:
label - the name to be removed