at.dms.kjc.common
Class VarsAssigned

java.lang.Object
  extended by at.dms.kjc.KjcEmptyVisitor
      extended by at.dms.kjc.SLIREmptyVisitor
          extended by at.dms.kjc.common.VarsAssigned
All Implemented Interfaces:
Constants, KjcVisitor, SLIRVisitor

public class VarsAssigned
extends SLIREmptyVisitor

Find all the vars that are possible assigned given a tree in the IR.

Author:
Michael Gordon

Field Summary
 
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
static HashSet<Object> getVarsAssigned(JPhylum entry)
          Given , the lhs of an assignment expression, or the exp of a prefix or posfix increment/decrement exp return the var(s) assigned in this expression
 void visitAssignmentExpression(JAssignmentExpression self, JExpression left, JExpression right)
          prints an assignment expression
 void visitCompoundAssignmentExpression(JCompoundAssignmentExpression self, int oper, JExpression left, JExpression right)
          prints a compound expression
 void visitPostfixExpression(JPostfixExpression self, int oper, JExpression expr)
          prints a postfix expression
 void visitPrefixExpression(JPrefixExpression self, int oper, JExpression expr)
          prints a prefix expression
 
Methods inherited from class at.dms.kjc.SLIREmptyVisitor
visitCreatePortalExpression, visitDynamicToken, visitFileReader, visitFileWriter, visitFunctionPointer, visitIdentity, visitInitStatement, visitInlineAssembly, visitInterfaceTable, visitLatency, visitLatencyMax, visitLatencyRange, visitLatencySet, visitMainFunction, visitMarker, visitMessageStatement, visitNode, visitPeekExpression, visitPopExpression, visitPortal, visitPrintStatement, visitPushExpression, visitRangeExpression, visitRegisterReceiver, visitRegReceiverStatement, visitRegSenderStatement, visitSetBodyOfFeedback, visitSetChild, visitSetDecode, visitSetDelay, visitSetEncode, visitSetJoiner, visitSetLoopOfFeedback, visitSetParallelStream, visitSetPeek, visitSetPop, visitSetPush, visitSetSplitter, visitSetStreamType, visitSetTape, visitSetWork, visitVectorLiteral, visitWorkEntry, visitWorkExit
 
Methods inherited from class at.dms.kjc.KjcEmptyVisitor
visitArgs, visitArrayAccessExpression, visitArrayInitializer, visitArrayLengthExpression, visitBinaryExpression, visitBitwiseComplementExpression, visitBitwiseExpression, visitBlockStatement, visitBooleanLiteral, visitBreakStatement, visitByteLiteral, visitCastExpression, visitCatchClause, visitCharLiteral, visitClassBody, visitClassDeclaration, visitClassExpression, visitClassImport, visitComment, visitComments, visitCompilationUnit, visitCompoundStatement, 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, 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
 
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.KjcVisitor
visitArrayAccessExpression, visitArrayInitializer, visitArrayLengthExpression, visitBinaryExpression, visitBitwiseComplementExpression, visitBitwiseExpression, visitBlockStatement, visitBooleanLiteral, visitBreakStatement, visitByteLiteral, visitCastExpression, visitCatchClause, visitCharLiteral, visitClassBody, visitClassDeclaration, visitClassExpression, visitClassImport, visitComment, visitComments, visitCompilationUnit, 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, 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
 

Method Detail

getVarsAssigned

public static HashSet<Object> getVarsAssigned(JPhylum entry)
Given , the lhs of an assignment expression, or the exp of a prefix or posfix increment/decrement exp return the var(s) assigned in this expression

Parameters:
entry - See above
Returns:
A Hashset containing JLocalVariables for assigned locals or Strings for assigned fields

visitAssignmentExpression

public void visitAssignmentExpression(JAssignmentExpression self,
                                      JExpression left,
                                      JExpression right)
Description copied from class: KjcEmptyVisitor
prints an assignment expression

Specified by:
visitAssignmentExpression in interface KjcVisitor
Overrides:
visitAssignmentExpression in class KjcEmptyVisitor

visitCompoundAssignmentExpression

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

Specified by:
visitCompoundAssignmentExpression in interface KjcVisitor
Overrides:
visitCompoundAssignmentExpression in class KjcEmptyVisitor

visitPrefixExpression

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

Specified by:
visitPrefixExpression in interface KjcVisitor
Overrides:
visitPrefixExpression in class KjcEmptyVisitor

visitPostfixExpression

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

Specified by:
visitPostfixExpression in interface KjcVisitor
Overrides:
visitPostfixExpression in class KjcEmptyVisitor