at.dms.kjc.sir.lowering
Class Propagator
java.lang.Object
at.dms.kjc.EmptyAttributeVisitor
at.dms.kjc.ReplacingVisitor
at.dms.kjc.SLIRReplacingVisitor
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 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 |
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 |
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
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
-
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