at.dms.kjc.sir
Class SIRPortal

java.lang.Object
  extended by at.dms.util.Utils
      extended by at.dms.compiler.Phylum
          extended by at.dms.kjc.JPhylum
              extended by at.dms.kjc.JExpression
                  extended by at.dms.kjc.JLiteral
                      extended by at.dms.kjc.sir.SIRPortal
All Implemented Interfaces:
Constants, DeepCloneable, Finalizable, Serializable

public class SIRPortal
extends JLiteral

This represents a stream portal used for messaging

See Also:
Serialized Form

Field Summary
protected static LinkedList<SIRPortal> portals
           
protected  LinkedList<SIRStream> receivers
           
protected  LinkedList<SIRPortalSender> senders
           
protected  CType type
           
 
Fields inherited from class at.dms.kjc.JExpression
EMPTY
 
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
SIRPortal(CType type)
           
 
Method Summary
 Object accept(AttributeVisitor p)
          Accepts the specified attribute visitor
<S,T> S
accept(ExpressionVisitor<S,T> p, T o)
          Accepts the specified visitor
 void accept(KjcVisitor p)
          Accepts the specified visitor
 void addReceiver(SIRStream stream)
           
 void addSender(SIRPortalSender sender)
           
 JExpression analyse(CExpressionContext context)
          Throws an exception (NOT SUPPORTED YET)
 String convertToString()
          For up-casting into a string type.
 JExpression convertType(CType dest, CExpressionContext context)
          convertType changes the type of this expression to an other
static boolean findMessageStatements(SIRStream str)
           
 void genCode(CodeSequence code, boolean discardValue)
          Generates JVM bytecode to evaluate this expression.
static SIRPortal[] getPortals()
           
static SIRPortal[] getPortalsWithReceiver(SIRStream receiver)
           
static SIRPortal[] getPortalsWithSender(SIRStream sender)
           
 CType getPortalType()
           
 SIRStream[] getReceivers()
           
 SIRPortalSender[] getSenders()
           
 CType getType()
          Compute the type of this expression (called after parsing)
 boolean hasReceiver(SIRStream receiver)
           
 boolean hasSender(SIRStream sender)
           
 boolean isConstant()
          Tests whether this expression denotes a compile-time constant (JLS 15.28).
 boolean isDefault()
          Returns true iff the value of this literal is the default value for this type (JLS 4.5.5).
 
Methods inherited from class at.dms.kjc.JLiteral
deepClone, deepCloneInto, getLiteral, parseInteger, parseReal, setType
 
Methods inherited from class at.dms.kjc.JExpression
booleanValue, byteValue, charValue, convertType, deepCloneInto, doubleValue, fail, floatValue, genBranch, genEndStoreCode, genStartStoreCode, getIdent, intValue, isAssignableTo, isDynamic, isFinal, isInitialized, isLValue, isStatementExpression, longValue, setInitialized, shortValue, stringValue
 
Methods inherited from class at.dms.kjc.JPhylum
assertMutable, check, check, check, check, deepCloneInto, setLineNumber
 
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
 

Field Detail

portals

protected static LinkedList<SIRPortal> portals

receivers

protected LinkedList<SIRStream> receivers

senders

protected LinkedList<SIRPortalSender> senders

type

protected CType type
Constructor Detail

SIRPortal

public SIRPortal(CType type)
Method Detail

findMessageStatements

public static boolean findMessageStatements(SIRStream str)

getPortals

public static SIRPortal[] getPortals()

getPortalsWithSender

public static SIRPortal[] getPortalsWithSender(SIRStream sender)

getPortalsWithReceiver

public static SIRPortal[] getPortalsWithReceiver(SIRStream receiver)

getPortalType

public CType getPortalType()

addReceiver

public void addReceiver(SIRStream stream)

addSender

public void addSender(SIRPortalSender sender)

hasSender

public boolean hasSender(SIRStream sender)

hasReceiver

public boolean hasReceiver(SIRStream receiver)

getReceivers

public SIRStream[] getReceivers()

getSenders

public SIRPortalSender[] getSenders()

analyse

public JExpression analyse(CExpressionContext context)
                    throws PositionedError
Throws an exception (NOT SUPPORTED YET)

Overrides:
analyse in class JLiteral
Parameters:
context - the analysis context
Returns:
an equivalent, analysed expression
Throws:
PositionedError - the analysis detected an error

isConstant

public boolean isConstant()
Description copied from class: JLiteral
Tests whether this expression denotes a compile-time constant (JLS 15.28).

Overrides:
isConstant in class JLiteral
Returns:
true iff this expression is constant

isDefault

public boolean isDefault()
Description copied from class: JLiteral
Returns true iff the value of this literal is the default value for this type (JLS 4.5.5).

Specified by:
isDefault in class JLiteral

convertType

public JExpression convertType(CType dest,
                               CExpressionContext context)
Description copied from class: JLiteral
convertType changes the type of this expression to an other

Specified by:
convertType in class JLiteral
Parameters:
dest - the destination type

getType

public CType getType()
Compute the type of this expression (called after parsing)

Specified by:
getType in class JExpression
Returns:
the type of this expression

accept

public void accept(KjcVisitor p)
Accepts the specified visitor

Specified by:
accept in class JExpression
Parameters:
p - the visitor

accept

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

Specified by:
accept in class JExpression
Parameters:
p - the visitor
Returns:
data to pass back up

accept

public <S,T> S accept(ExpressionVisitor<S,T> p,
                      T o)
Accepts the specified visitor

Specified by:
accept in class JExpression
Type Parameters:
S - output type
T - auxilliary input type
Parameters:
p - the visitor
o - object containing extra data to be passed to visitor
Returns:
object containing data generated by visitor

genCode

public void genCode(CodeSequence code,
                    boolean discardValue)
Generates JVM bytecode to evaluate this expression.

Specified by:
genCode in class JExpression
Parameters:
code - the bytecode sequence
discardValue - discard the result of the evaluation ?

convertToString

public String convertToString()
Description copied from class: JLiteral
For up-casting into a string type.

Specified by:
convertToString in class JLiteral