at.dms.kjc.spacetime
Class ConvertCommunication

java.lang.Object
  extended by at.dms.kjc.EmptyAttributeVisitor
      extended by at.dms.kjc.ReplacingVisitor
          extended by at.dms.kjc.SLIRReplacingVisitor
              extended by at.dms.kjc.spacetime.ConvertCommunication
All Implemented Interfaces:
Constants, AttributeVisitor<Object>, SLIRAttributeVisitor<Object>

public class ConvertCommunication
extends SLIRReplacingVisitor

This class will convert peek and pop statements into reads from a buffer (an array). This class is used by BufferedCommunication to convert the peek's and pop's. It uses a circular buffer from which to read the values.

Author:
mgordon

Field Summary
 
Fields inherited from class at.dms.kjc.EmptyAttributeVisitor
forwards
 
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
ConvertCommunication(GeneratedVariables generateds, FilterInfo fitlerInfo)
          Create a new object that will convert filterInfo's input communication using the variables generateds.
 
Method Summary
 Object visitPeekExpression(SIRPeekExpression oldSelf, CType oldTapeType, JExpression oldArg)
          Convert peek exps into: (recvBuffer[(recvBufferIndex + (arg) + 1) mod recvBufferSize]) Where the variables are defined in generatedVariables.
 Object visitPopExpression(SIRPopExpression self, CType tapeType)
          Visit a pop expressions convert to the form: (recvBuffer[++recvBufferIndex % recvBufferSize]) Where the variables are defined in generatedVariables.
 
Methods inherited from class at.dms.kjc.SLIRReplacingVisitor
visitCreatePortalExpression, visitDynamicToken, visitFileReader, visitFileWriter, visitFunctionPointer, visitInitStatement, visitInterfaceTable, visitLatency, visitLatencyMax, visitLatencyRange, visitLatencySet, visitMainFunction, visitMarker, visitMessageStatement, visitNode, visitPortal, visitPrintStatement, visitPushExpression, visitRangeExpression, visitRegReceiverStatement, visitRegSenderStatement, visitSetBodyOfFeedback, visitSetChild, visitSetDecode, visitSetDelay, visitSetEncode, visitSetJoiner, visitSetLoopOfFeedback, visitSetParallelStream, visitSetPeek, visitSetPop, visitSetPush, visitSetSplitter, visitSetStreamType, visitSetTape, visitSetWork, visitVectorLiteral
 
Methods inherited from class at.dms.kjc.ReplacingVisitor
visitArgs, visitArrayAccessExpression, visitArrayLengthExpression, visitAssignmentExpression, visitBinaryExpression, visitBitwiseComplementExpression, visitBitwiseExpression, visitBlockStatement, visitCastExpression, visitCompoundAssignmentExpression, visitCompoundStatement, visitConditionalExpression, visitDoStatement, visitEmittedTextExpression, visitEqualityExpression, visitExpressionListStatement, visitExpressionStatement, visitFieldDeclaration, visitFieldExpression, visitFormalParameters, visitForStatement, visitIfStatement, visitInstanceofExpression, visitLabeledStatement, visitLogicalComplementExpression, visitMethodCallExpression, visitNameExpression, visitNewArrayExpression, visitParenthesedExpression, visitPostfixExpression, visitPrefixExpression, visitQualifiedAnonymousCreation, visitQualifiedInstanceCreation, visitRelationalExpression, visitReturnStatement, visitShiftExpression, visitSwitchGroup, visitSwitchLabel, visitSwitchStatement, visitSynchronizedStatement, visitThisExpression, visitThrowStatement, visitUnaryMinusExpression, visitUnaryPlusExpression, visitUnaryPromoteExpression, visitVariableDeclarationStatement, visitVariableDefinition, visitWhileStatement
 
Methods inherited from class at.dms.kjc.EmptyAttributeVisitor
visitArrayInitializer, visitBooleanLiteral, visitBreakStatement, visitByteLiteral, visitCatchClause, visitCharLiteral, visitClassBody, visitClassDeclaration, visitClassExpression, visitClassImport, visitComment, visitComments, visitCompilationUnit, visitConstructorCall, visitConstructorDeclaration, visitContinueStatement, visitDoubleLiteral, visitEmptyStatement, visitFloatLiteral, visitInnerClassDeclaration, visitInterfaceDeclaration, visitIntLiteral, visitJavadoc, visitLocalVariableExpression, visitLongLiteral, visitMethodDeclaration, visitNullLiteral, visitPackageImport, visitPackageName, visitShortLiteral, visitStringLiteral, visitSuperExpression, visitTryCatchStatement, visitTryFinallyStatement, visitTypeDeclarationStatement, visitTypeNameExpression, visitUnqualifiedAnonymousCreation, visitUnqualifiedInstanceCreation
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface at.dms.kjc.AttributeVisitor
visitArrayAccessExpression, visitArrayInitializer, visitArrayLengthExpression, visitAssignmentExpression, visitBinaryExpression, visitBitwiseComplementExpression, visitBitwiseExpression, visitBlockStatement, visitBooleanLiteral, visitBreakStatement, visitByteLiteral, visitCastExpression, visitCatchClause, visitCharLiteral, visitClassBody, visitClassDeclaration, visitClassExpression, visitClassImport, visitComment, visitComments, visitCompilationUnit, visitCompoundAssignmentExpression, visitCompoundStatement, visitConditionalExpression, visitConstructorCall, visitConstructorDeclaration, visitContinueStatement, visitDoStatement, visitDoubleLiteral, visitEmittedTextExpression, visitEmptyStatement, visitEqualityExpression, visitExpressionListStatement, visitExpressionStatement, visitFieldDeclaration, visitFieldExpression, visitFloatLiteral, visitFormalParameters, visitForStatement, visitIfStatement, visitInnerClassDeclaration, visitInstanceofExpression, visitInterfaceDeclaration, visitIntLiteral, visitJavadoc, visitLabeledStatement, visitLocalVariableExpression, visitLogicalComplementExpression, visitLongLiteral, visitMethodCallExpression, visitMethodDeclaration, visitNameExpression, visitNewArrayExpression, visitNullLiteral, visitPackageImport, visitPackageName, visitParenthesedExpression, visitPostfixExpression, visitPrefixExpression, visitQualifiedAnonymousCreation, visitQualifiedInstanceCreation, visitRelationalExpression, visitReturnStatement, visitShiftExpression, visitShortLiteral, visitStringLiteral, visitSuperExpression, visitSwitchGroup, visitSwitchLabel, visitSwitchStatement, visitSynchronizedStatement, visitThisExpression, visitThrowStatement, visitTryCatchStatement, visitTryFinallyStatement, visitTypeDeclarationStatement, visitTypeNameExpression, visitUnaryMinusExpression, visitUnaryPlusExpression, visitUnaryPromoteExpression, visitUnqualifiedAnonymousCreation, visitUnqualifiedInstanceCreation, visitVariableDeclarationStatement, visitVariableDefinition, visitWhileStatement
 

Constructor Detail

ConvertCommunication

public ConvertCommunication(GeneratedVariables generateds,
                            FilterInfo fitlerInfo)
Create a new object that will convert filterInfo's input communication using the variables generateds.

Parameters:
generateds - The compiler generated vars.
fitlerInfo - The filter.
Method Detail

visitPopExpression

public Object visitPopExpression(SIRPopExpression self,
                                 CType tapeType)
Visit a pop expressions convert to the form: (recvBuffer[++recvBufferIndex % recvBufferSize]) Where the variables are defined in generatedVariables.

Specified by:
visitPopExpression in interface SLIRAttributeVisitor<Object>
Overrides:
visitPopExpression in class SLIRReplacingVisitor
Returns:
the new expression as a buffer access.

visitPeekExpression

public Object visitPeekExpression(SIRPeekExpression oldSelf,
                                  CType oldTapeType,
                                  JExpression oldArg)
Convert peek exps into: (recvBuffer[(recvBufferIndex + (arg) + 1) mod recvBufferSize]) Where the variables are defined in generatedVariables.

Specified by:
visitPeekExpression in interface SLIRAttributeVisitor<Object>
Overrides:
visitPeekExpression in class SLIRReplacingVisitor
Returns:
The converted expression that will use a buffer access.