at.dms.kjc
Class JPhylum

java.lang.Object
  extended by at.dms.util.Utils
      extended by at.dms.compiler.Phylum
          extended by at.dms.kjc.JPhylum
All Implemented Interfaces:
Constants, DeepCloneable, Finalizable, Serializable
Direct Known Subclasses:
JCatchClause, JClassImport, JCompilationUnit, JExpression, JLocalVariable, JMemberDeclaration, JPackageImport, JPackageName, JStatement, JSwitchGroup, JSwitchLabel

public abstract class JPhylum
extends Phylum
implements Constants, Finalizable

This class represents the root class for all elements of the parsing tree

See Also:
Serialized Form

Field Summary
 
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 JPhylum()
           
  JPhylum(TokenReference where)
          construct an element of the parsing tree
 
Method Summary
abstract  Object accept(AttributeVisitor p)
          Accepts the specified attribute visitor
abstract  void accept(KjcVisitor p)
          Accepts the specified visitor
 void assertMutable()
          Asserts that this is mutable.
 void check(CContext context, boolean cond, MessageDescription description)
          Verifies that the condition is true; otherwise adds an error.
 void check(CContext context, boolean cond, MessageDescription description, Object param)
          Verifies that the condition is true; otherwise adds an error.
 void check(CContext context, boolean cond, MessageDescription description, Object[] params)
          Verifies that the condition is true; otherwise adds an error.
 void check(CContext context, boolean cond, MessageDescription description, Object param1, Object param2)
          Verifies that the condition is true; otherwise adds an error.
 Object deepClone()
          Returns a deep clone of this object.
protected  void deepCloneInto(JPhylum other)
          Clones all fields of this into
protected  void fail(CContext context, MessageDescription description, Object[] params)
          Adds a compiler error.
 void setLineNumber(CodeSequence code)
          Sets the line number of this phylum in the code sequence.
 
Methods inherited from class at.dms.compiler.Phylum
deepCloneInto, getTokenReference, setTokenReference
 
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, toString, wait, wait, wait
 

Constructor Detail

JPhylum

protected JPhylum()

JPhylum

public JPhylum(TokenReference where)
construct an element of the parsing tree

Parameters:
where - the token reference of this node
Method Detail

assertMutable

public void assertMutable()
Description copied from interface: Finalizable
Asserts that this is mutable. If this has been finalized, throws a runtime exception. This should be done with a lookup to a third-party class that is keeping track of the immutability. (We don't let the class itself keep track of the immutability, since the immutability can only be modified in batches by a trusted party that iterates over part of the tree.)

Specified by:
assertMutable in interface Finalizable

fail

protected void fail(CContext context,
                    MessageDescription description,
                    Object[] params)
             throws PositionedError
Adds a compiler error. Redefine this method to change error handling behaviour.

Parameters:
context - the context in which the error occurred
description - the message ident to be displayed
params - the array of parameters
Throws:
PositionedError

check

public final void check(CContext context,
                        boolean cond,
                        MessageDescription description,
                        Object[] params)
                 throws PositionedError
Verifies that the condition is true; otherwise adds an error.

Parameters:
context - the context in which the check occurred
cond - the condition to verify
description - the message ident to be displayed
params - the array of parameters
Throws:
PositionedError

check

public final void check(CContext context,
                        boolean cond,
                        MessageDescription description,
                        Object param1,
                        Object param2)
                 throws PositionedError
Verifies that the condition is true; otherwise adds an error.

Parameters:
context - the context in which the check occurred
cond - the condition to verify
description - the message ident to be displayed
param1 - the first parameter
param2 - the second parameter
Throws:
PositionedError

check

public final void check(CContext context,
                        boolean cond,
                        MessageDescription description,
                        Object param)
                 throws PositionedError
Verifies that the condition is true; otherwise adds an error.

Parameters:
context - the context in which the check occurred
cond - the condition to verify
description - the message ident to be displayed
param - the parameter
Throws:
PositionedError

check

public final void check(CContext context,
                        boolean cond,
                        MessageDescription description)
                 throws PositionedError
Verifies that the condition is true; otherwise adds an error.

Parameters:
context - the context in which the check occurred
cond - the condition to verify
description - the message ident to be displayed
Throws:
PositionedError

accept

public abstract void accept(KjcVisitor p)
Accepts the specified visitor

Parameters:
p - the visitor

accept

public abstract Object accept(AttributeVisitor p)
Accepts the specified attribute visitor

Parameters:
p - the visitor

setLineNumber

public void setLineNumber(CodeSequence code)
Sets the line number of this phylum in the code sequence.

Parameters:
code - the bytecode sequence

deepClone

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

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

deepCloneInto

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