at.dms.kjc.sir.lowering
Class Propagator

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.sir.lowering.Propagator
All Implemented Interfaces:
Constants, AttributeVisitor<Object>, SLIRAttributeVisitor<Object>

public class Propagator
extends SLIRReplacingVisitor

This class propagates constants and partially evaluates all expressions as much as possible.


Field Summary
protected  boolean added
          If anything was added
protected  Hashtable<JLocalVariable,Object> constants
          Map of known constants/Overloaded for copy prop (JLocalVariable -> JLiteral/JLocalVariableExpr/Array) When storing information about an array JLiteral/JLocalVariablesExpr are stored in the Array being mapped to
static String TEMP_VARIABLE_BASE
          Base for new const.
protected  boolean write
          Determines whether this instance of Propagator writes actual changes or not
 
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
Propagator(Hashtable<JLocalVariable,Object> constants)
          Constructor, given that constants maps JLocalVariables to JLiterals for the scope that we'll be visiting.
Propagator(Hashtable<JLocalVariable,Object> constants, boolean write)
          Constructor, given that constants maps JLocalVariables to JLiterals for the scope that we'll be visiting.
 
Method Summary
 Propagator construct(Hashtable<JLocalVariable,Object> constants)
          Factory rather than direct call to constructor.
 Propagator construct(Hashtable<JLocalVariable,Object> constants, boolean write)
          Factory rather than direct call to constructor.
 Hashtable<JLocalVariable,Boolean> getChanged()
          Get map from JLocalVariable (JVariableDefinition, JFormalParameter etc) to whether has changed
 Hashtable<JLocalVariable,Object> getConstants()
          Get map from JLocalVariable (JVariableDefinition, JFormalParameter etc) to constant.
 Object visitArgs(JExpression[] args)
          Visits a set of arguments
 Object visitArrayAccessExpression(JArrayAccessExpression self, JExpression prefix, JExpression accessor)
          Visits an array access expression
 Object visitArrayLengthExpression(JArrayLengthExpression self, JExpression prefix)
          Visits an array length access expression
 Object visitAssignmentExpression(JAssignmentExpression self, JExpression left, JExpression right)
          Visits an assignment expression
 Object visitBinaryExpression(JBinaryExpression self, String oper, JExpression left, JExpression right)
          prints an array allocator expression
 Object visitBitwiseComplementExpression(JUnaryExpression self, JExpression expr)
          Visits a bitwise complement expression
 Object visitBitwiseExpression(JBitwiseExpression self, int oper, JExpression left, JExpression right)
          Visits a compound assignment expression
 Object visitBlockStatement(JBlock self, JavaStyleComment[] comments)
          prints an expression statement
 Object visitCastExpression(JCastExpression self, JExpression expr, CType type)
          visits a cast expression
 Object visitCompoundAssignmentExpression(JCompoundAssignmentExpression self, int oper, JExpression left, JExpression right)
          prints a compound expression
 Object visitConditionalExpression(JConditionalExpression self, JExpression cond, JExpression left, JExpression right)
          Visits a conditional expression
 Object visitDoStatement(JDoStatement self, JExpression cond, JStatement body)
          Visits a do statement
 Object visitEqualityExpression(JEqualityExpression self, boolean equal, JExpression left, JExpression right)
          prints an equality expression
 Object visitExpressionStatement(JExpressionStatement self, JExpression expr)
          Visits an expression statement
 Object visitFieldExpression(JFieldAccessExpression self, JExpression left, String ident)
          prints a field expression
 Object visitForStatement(JForStatement self, JStatement init, JExpression cond, JStatement incr, JStatement body)
          Visits a for statement
 Object visitIfStatement(JIfStatement self, JExpression cond, JStatement thenClause, JStatement elseClause)
          Visits a if statement
 Object visitLatencyMax(SIRLatencyMax self)
          Visits a max latency.
 Object visitLatencyRange(SIRLatencyRange self)
          Visits a latency range.
 Object visitLocalVariableExpression(JLocalVariableExpression self, String ident)
          Visits a local variable expression
 Object visitLogicalComplementExpression(JUnaryExpression self, JExpression expr)
          Visits a logical complement expression
 Object visitMethodCallExpression(JMethodCallExpression self, JExpression prefix, String ident, JExpression[] args)
          Visits a method call expression.
 Object visitNewArrayExpression(JNewArrayExpression self, CType type, JExpression[] dims, JArrayInitializer init)
          Visits an array allocator expression
 Object visitPeekExpression(SIRPeekExpression self, CType tapeType, JExpression arg)
          Visits a peek expression.
 Object visitPostfixExpression(JPostfixExpression self, int oper, JExpression expr)
          prints a postfix expression
 Object visitPrefixExpression(JPrefixExpression self, int oper, JExpression expr)
          prints a prefix expression
 Object visitPrintStatement(SIRPrintStatement self, JExpression arg)
          Visits a print statement.
 Object visitPushExpression(SIRPushExpression self, CType tapeType, JExpression arg)
          Visits a push expression.
 Object visitRegReceiverStatement(SIRRegReceiverStatement self, JExpression portal, SIRStream receiver, JMethodDeclaration[] methods)
          Visits a register-receiver statement.
 Object visitRelationalExpression(JRelationalExpression self, int oper, JExpression left, JExpression right)
          Visits a relational expression
 Object visitReturnStatement(JReturnStatement self, JExpression expr)
          Visits a return statement
 Object visitShiftExpression(JShiftExpression self, int oper, JExpression left, JExpression right)
          Visits a shift expression
 Object visitSwitchLabel(JSwitchLabel self, JExpression expr)
          Visits an array length expression
 Object visitSwitchStatement(JSwitchStatement self, JExpression expr, JSwitchGroup[] body)
          Visits a switch statement
 Object visitUnaryMinusExpression(JUnaryExpression self, JExpression expr)
          Visits an unary minus expression
 Object visitUnaryPlusExpression(JUnaryExpression self, JExpression expr)
          Visits an unary plus expression
 Object visitUnaryPromoteExpression(JUnaryPromote self, JExpression expr, CType type)
          visits a type promotion expression
 Object visitVariableDefinition(JVariableDefinition self, int modifiers, CType type, String ident, JExpression expr)
          Visits a variable declaration statement
 Object visitWhileStatement(JWhileStatement self, JExpression cond, JStatement body)
          Visits a while statement
 
Methods inherited from class at.dms.kjc.SLIRReplacingVisitor
visitCreatePortalExpression, visitDynamicToken, visitFileReader, visitFileWriter, visitFunctionPointer, visitInitStatement, visitInterfaceTable, visitLatency, visitLatencySet, visitMainFunction, visitMarker, visitMessageStatement, visitNode, visitPopExpression, visitPortal, visitRangeExpression, 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
visitCompoundStatement, visitEmittedTextExpression, visitExpressionListStatement, visitFieldDeclaration, visitFormalParameters, visitInstanceofExpression, visitLabeledStatement, visitNameExpression, visitParenthesedExpression, visitQualifiedAnonymousCreation, visitQualifiedInstanceCreation, visitSwitchGroup, visitSynchronizedStatement, visitThisExpression, visitThrowStatement, visitVariableDeclarationStatement
 
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, 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
visitArrayInitializer, visitBooleanLiteral, visitBreakStatement, visitByteLiteral, visitCatchClause, visitCharLiteral, visitClassBody, visitClassDeclaration, visitClassExpression, visitClassImport, visitComment, visitComments, visitCompilationUnit, visitCompoundStatement, visitConstructorCall, visitConstructorDeclaration, visitContinueStatement, visitDoubleLiteral, visitEmittedTextExpression, visitEmptyStatement, visitExpressionListStatement, visitFieldDeclaration, visitFloatLiteral, visitFormalParameters, visitInnerClassDeclaration, visitInstanceofExpression, visitInterfaceDeclaration, visitIntLiteral, visitJavadoc, visitLabeledStatement, visitLongLiteral, visitMethodDeclaration, visitNameExpression, visitNullLiteral, visitPackageImport, visitPackageName, visitParenthesedExpression, visitQualifiedAnonymousCreation, visitQualifiedInstanceCreation, visitShortLiteral, visitStringLiteral, visitSuperExpression, visitSwitchGroup, visitSynchronizedStatement, visitThisExpression, visitThrowStatement, visitTryCatchStatement, visitTryFinallyStatement, visitTypeDeclarationStatement, visitTypeNameExpression, visitUnqualifiedAnonymousCreation, visitUnqualifiedInstanceCreation, visitVariableDeclarationStatement
 

Field Detail

TEMP_VARIABLE_BASE

public static final String TEMP_VARIABLE_BASE
Base for new const. prop temp variables.

See Also:
Constant Field Values

constants

protected Hashtable<JLocalVariable,Object> constants
Map of known constants/Overloaded for copy prop (JLocalVariable -> JLiteral/JLocalVariableExpr/Array) When storing information about an array JLiteral/JLocalVariablesExpr are stored in the Array being mapped to


added

protected boolean added
If anything was added


write

protected boolean write
Determines whether this instance of Propagator writes actual changes or not

Constructor Detail

Propagator

public Propagator(Hashtable<JLocalVariable,Object> constants)
Constructor, given that constants maps JLocalVariables to JLiterals for the scope that we'll be visiting. the Propagator will update code.

Parameters:
constants -

Propagator

public Propagator(Hashtable<JLocalVariable,Object> constants,
                  boolean write)
Constructor, given that constants maps JLocalVariables to JLiterals for the scope that we'll be visiting. the Propagator will optionally update code based on the value of write.

Parameters:
constants -
write -
Method Detail

construct

public Propagator construct(Hashtable<JLocalVariable,Object> constants)
Factory rather than direct call to constructor.

Parameters:
constants -
Returns:
a Propagator that will update code.

construct

public Propagator construct(Hashtable<JLocalVariable,Object> constants,
                            boolean write)
Factory rather than direct call to constructor.

Parameters:
constants -
write -
Returns:
a Propagator that will optionally update code based on value of write.

getConstants

public Hashtable<JLocalVariable,Object> getConstants()
Get map from JLocalVariable (JVariableDefinition, JFormalParameter etc) to constant. Code seems to save various constants: JLiteral, SIRPortal, java arrays of above, and may contain copy prop info as well as constant prop.

Returns:

getChanged

public Hashtable<JLocalVariable,Boolean> getChanged()
Get map from JLocalVariable (JVariableDefinition, JFormalParameter etc) to whether has changed

Returns:

visitRegReceiverStatement

public Object visitRegReceiverStatement(SIRRegReceiverStatement self,
                                        JExpression portal,
                                        SIRStream receiver,
                                        JMethodDeclaration[] methods)
Description copied from class: SLIRReplacingVisitor
Visits a register-receiver statement.

Specified by:
visitRegReceiverStatement in interface SLIRAttributeVisitor<Object>
Overrides:
visitRegReceiverStatement in class SLIRReplacingVisitor

visitWhileStatement

public Object visitWhileStatement(JWhileStatement self,
                                  JExpression cond,
                                  JStatement body)
Visits a while statement

Specified by:
visitWhileStatement in interface AttributeVisitor<Object>
Overrides:
visitWhileStatement in class ReplacingVisitor

visitDoStatement

public Object visitDoStatement(JDoStatement self,
                               JExpression cond,
                               JStatement body)
Visits a do statement

Specified by:
visitDoStatement in interface AttributeVisitor<Object>
Overrides:
visitDoStatement in class ReplacingVisitor

visitVariableDefinition

public Object visitVariableDefinition(JVariableDefinition self,
                                      int modifiers,
                                      CType type,
                                      String ident,
                                      JExpression expr)
Visits a variable declaration statement

Specified by:
visitVariableDefinition in interface AttributeVisitor<Object>
Overrides:
visitVariableDefinition in class ReplacingVisitor

visitSwitchStatement

public Object visitSwitchStatement(JSwitchStatement self,
                                   JExpression expr,
                                   JSwitchGroup[] body)
Visits a switch statement

Specified by:
visitSwitchStatement in interface AttributeVisitor<Object>
Overrides:
visitSwitchStatement in class ReplacingVisitor

visitReturnStatement

public Object visitReturnStatement(JReturnStatement self,
                                   JExpression expr)
Visits a return statement

Specified by:
visitReturnStatement in interface AttributeVisitor<Object>
Overrides:
visitReturnStatement in class ReplacingVisitor

visitIfStatement

public Object visitIfStatement(JIfStatement self,
                               JExpression cond,
                               JStatement thenClause,
                               JStatement elseClause)
Visits a if statement

Specified by:
visitIfStatement in interface AttributeVisitor<Object>
Overrides:
visitIfStatement in class ReplacingVisitor

visitForStatement

public Object visitForStatement(JForStatement self,
                                JStatement init,
                                JExpression cond,
                                JStatement incr,
                                JStatement body)
Visits a for statement

Specified by:
visitForStatement in interface AttributeVisitor<Object>
Overrides:
visitForStatement in class ReplacingVisitor

visitExpressionStatement

public Object visitExpressionStatement(JExpressionStatement self,
                                       JExpression expr)
Visits an expression statement

Specified by:
visitExpressionStatement in interface AttributeVisitor<Object>
Overrides:
visitExpressionStatement in class ReplacingVisitor

visitPrintStatement

public Object visitPrintStatement(SIRPrintStatement self,
                                  JExpression arg)
Visits a print statement.

Specified by:
visitPrintStatement in interface SLIRAttributeVisitor<Object>
Overrides:
visitPrintStatement in class SLIRReplacingVisitor

visitPeekExpression

public Object visitPeekExpression(SIRPeekExpression self,
                                  CType tapeType,
                                  JExpression arg)
Visits a peek expression.

Specified by:
visitPeekExpression in interface SLIRAttributeVisitor<Object>
Overrides:
visitPeekExpression in class SLIRReplacingVisitor

visitPushExpression

public Object visitPushExpression(SIRPushExpression self,
                                  CType tapeType,
                                  JExpression arg)
Visits a push expression.

Specified by:
visitPushExpression in interface SLIRAttributeVisitor<Object>
Overrides:
visitPushExpression in class SLIRReplacingVisitor

visitPostfixExpression

public Object visitPostfixExpression(JPostfixExpression self,
                                     int oper,
                                     JExpression expr)
Description copied from class: ReplacingVisitor
prints a postfix expression

Specified by:
visitPostfixExpression in interface AttributeVisitor<Object>
Overrides:
visitPostfixExpression in class ReplacingVisitor

visitPrefixExpression

public Object visitPrefixExpression(JPrefixExpression self,
                                    int oper,
                                    JExpression expr)
Description copied from class: ReplacingVisitor
prints a prefix expression

Specified by:
visitPrefixExpression in interface AttributeVisitor<Object>
Overrides:
visitPrefixExpression in class ReplacingVisitor

visitCompoundAssignmentExpression

public Object visitCompoundAssignmentExpression(JCompoundAssignmentExpression self,
                                                int oper,
                                                JExpression left,
                                                JExpression right)
Description copied from class: ReplacingVisitor
prints a compound expression

Specified by:
visitCompoundAssignmentExpression in interface AttributeVisitor<Object>
Overrides:
visitCompoundAssignmentExpression in class ReplacingVisitor

visitFieldExpression

public Object visitFieldExpression(JFieldAccessExpression self,
                                   JExpression left,
                                   String ident)
Description copied from class: ReplacingVisitor
prints a field expression

Specified by:
visitFieldExpression in interface AttributeVisitor<Object>
Overrides:
visitFieldExpression in class ReplacingVisitor

visitAssignmentExpression

public Object visitAssignmentExpression(JAssignmentExpression self,
                                        JExpression left,
                                        JExpression right)
Visits an assignment expression

Specified by:
visitAssignmentExpression in interface AttributeVisitor<Object>
Overrides:
visitAssignmentExpression in class ReplacingVisitor

visitUnaryPlusExpression

public Object visitUnaryPlusExpression(JUnaryExpression self,
                                       JExpression expr)
Visits an unary plus expression

Specified by:
visitUnaryPlusExpression in interface AttributeVisitor<Object>
Overrides:
visitUnaryPlusExpression in class ReplacingVisitor

visitCastExpression

public Object visitCastExpression(JCastExpression self,
                                  JExpression expr,
                                  CType type)
visits a cast expression

Specified by:
visitCastExpression in interface AttributeVisitor<Object>
Overrides:
visitCastExpression in class ReplacingVisitor

visitUnaryPromoteExpression

public Object visitUnaryPromoteExpression(JUnaryPromote self,
                                          JExpression expr,
                                          CType type)
visits a type promotion expression

Specified by:
visitUnaryPromoteExpression in interface AttributeVisitor<Object>
Overrides:
visitUnaryPromoteExpression in class ReplacingVisitor

visitUnaryMinusExpression

public Object visitUnaryMinusExpression(JUnaryExpression self,
                                        JExpression expr)
Visits an unary minus expression

Specified by:
visitUnaryMinusExpression in interface AttributeVisitor<Object>
Overrides:
visitUnaryMinusExpression in class ReplacingVisitor

visitBitwiseComplementExpression

public Object visitBitwiseComplementExpression(JUnaryExpression self,
                                               JExpression expr)
Visits a bitwise complement expression

Specified by:
visitBitwiseComplementExpression in interface AttributeVisitor<Object>
Overrides:
visitBitwiseComplementExpression in class ReplacingVisitor

visitLogicalComplementExpression

public Object visitLogicalComplementExpression(JUnaryExpression self,
                                               JExpression expr)
Visits a logical complement expression

Specified by:
visitLogicalComplementExpression in interface AttributeVisitor<Object>
Overrides:
visitLogicalComplementExpression in class ReplacingVisitor

visitShiftExpression

public Object visitShiftExpression(JShiftExpression self,
                                   int oper,
                                   JExpression left,
                                   JExpression right)
Visits a shift expression

Specified by:
visitShiftExpression in interface AttributeVisitor<Object>
Overrides:
visitShiftExpression in class ReplacingVisitor

visitNewArrayExpression

public Object visitNewArrayExpression(JNewArrayExpression self,
                                      CType type,
                                      JExpression[] dims,
                                      JArrayInitializer init)
Visits an array allocator expression

Specified by:
visitNewArrayExpression in interface AttributeVisitor<Object>
Overrides:
visitNewArrayExpression in class ReplacingVisitor

visitLocalVariableExpression

public Object visitLocalVariableExpression(JLocalVariableExpression self,
                                           String ident)
Visits a local variable expression

Specified by:
visitLocalVariableExpression in interface AttributeVisitor<Object>
Overrides:
visitLocalVariableExpression in class EmptyAttributeVisitor

visitRelationalExpression

public Object visitRelationalExpression(JRelationalExpression self,
                                        int oper,
                                        JExpression left,
                                        JExpression right)
Visits a relational expression

Specified by:
visitRelationalExpression in interface AttributeVisitor<Object>
Overrides:
visitRelationalExpression in class ReplacingVisitor

visitConditionalExpression

public Object visitConditionalExpression(JConditionalExpression self,
                                         JExpression cond,
                                         JExpression left,
                                         JExpression right)
Visits a conditional expression

Specified by:
visitConditionalExpression in interface AttributeVisitor<Object>
Overrides:
visitConditionalExpression in class ReplacingVisitor

visitBinaryExpression

public Object visitBinaryExpression(JBinaryExpression self,
                                    String oper,
                                    JExpression left,
                                    JExpression right)
prints an array allocator expression

Specified by:
visitBinaryExpression in interface AttributeVisitor<Object>
Overrides:
visitBinaryExpression in class ReplacingVisitor

visitBitwiseExpression

public Object visitBitwiseExpression(JBitwiseExpression self,
                                     int oper,
                                     JExpression left,
                                     JExpression right)
Visits a compound assignment expression

Specified by:
visitBitwiseExpression in interface AttributeVisitor<Object>
Overrides:
visitBitwiseExpression in class ReplacingVisitor

visitEqualityExpression

public Object visitEqualityExpression(JEqualityExpression self,
                                      boolean equal,
                                      JExpression left,
                                      JExpression right)
Description copied from class: ReplacingVisitor
prints an equality expression

Specified by:
visitEqualityExpression in interface AttributeVisitor<Object>
Overrides:
visitEqualityExpression in class ReplacingVisitor

visitMethodCallExpression

public Object visitMethodCallExpression(JMethodCallExpression self,
                                        JExpression prefix,
                                        String ident,
                                        JExpression[] args)
Visits a method call expression. Simplifies known idempotent functions.

Specified by:
visitMethodCallExpression in interface AttributeVisitor<Object>
Overrides:
visitMethodCallExpression in class ReplacingVisitor

visitLatencyMax

public Object visitLatencyMax(SIRLatencyMax self)
Visits a max latency.

Specified by:
visitLatencyMax in interface SLIRAttributeVisitor<Object>
Overrides:
visitLatencyMax in class SLIRReplacingVisitor

visitLatencyRange

public Object visitLatencyRange(SIRLatencyRange self)
Visits a latency range.

Specified by:
visitLatencyRange in interface SLIRAttributeVisitor<Object>
Overrides:
visitLatencyRange in class SLIRReplacingVisitor

visitArrayLengthExpression

public Object visitArrayLengthExpression(JArrayLengthExpression self,
                                         JExpression prefix)
Visits an array length access expression

Specified by:
visitArrayLengthExpression in interface AttributeVisitor<Object>
Overrides:
visitArrayLengthExpression in class ReplacingVisitor

visitArrayAccessExpression

public Object visitArrayAccessExpression(JArrayAccessExpression self,
                                         JExpression prefix,
                                         JExpression accessor)
Visits an array access expression

Specified by:
visitArrayAccessExpression in interface AttributeVisitor<Object>
Overrides:
visitArrayAccessExpression in class ReplacingVisitor

visitBlockStatement

public Object visitBlockStatement(JBlock self,
                                  JavaStyleComment[] comments)
Description copied from class: ReplacingVisitor
prints an expression statement

Specified by:
visitBlockStatement in interface AttributeVisitor<Object>
Overrides:
visitBlockStatement in class ReplacingVisitor

visitSwitchLabel

public Object visitSwitchLabel(JSwitchLabel self,
                               JExpression expr)
Visits an array length expression

Specified by:
visitSwitchLabel in interface AttributeVisitor<Object>
Overrides:
visitSwitchLabel in class ReplacingVisitor

visitArgs

public Object visitArgs(JExpression[] args)
Visits a set of arguments

Overrides:
visitArgs in class ReplacingVisitor