at.dms.kjc.cluster
Class InsertCounters

java.lang.Object
  extended by at.dms.kjc.KjcEmptyVisitor
      extended by at.dms.kjc.SLIREmptyVisitor
          extended by at.dms.kjc.common.ToCCommon
              extended by at.dms.kjc.common.ToC
                  extended by at.dms.kjc.cluster.InsertCounters
All Implemented Interfaces:
Constants, CodeGenerator, KjcVisitor, SLIRVisitor
Direct Known Subclasses:
InsertTimers

public class InsertCounters
extends ToC
implements Constants

If KjcOptions.countops is enabled, this class inserts insrumentation calls for counting the number of operations in the C runtime. If KjcOptions.countops is false, then this layer of code generation is a no-op. Instrumentation calls are primarily to the profiler::register_op function, documented in the cluster library.


Field Summary
 
Fields inherited from class at.dms.kjc.common.ToC
isInit, method
 
Fields inherited from class at.dms.kjc.common.ToCCommon
alternatePrintsForTiming, hasBoolType, lastLeft, p, printPostfixMap, printPrefixMap
 
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
InsertCounters()
           
InsertCounters(CodegenPrintWriter p)
           
 
Method Summary
protected  void beginWrapper(String op)
          If profiling is enabled, emit a call to the profiler that indicates operation (as defined in profiler.h) is executed.
protected  void endWrapper()
          If profiling is enabled, close an emitted call to the profiler.
static int getNumIds()
          Returns the number of ID's that were assigned by the profiler.
 void visitBinaryExpression(JBinaryExpression self, String oper, JExpression left, JExpression right)
          prints an binary expression
 void visitBitwiseComplementExpression(JUnaryExpression self, JExpression expr)
          prints a bitwise complement expression
 void visitBitwiseExpression(JBitwiseExpression self, int oper, JExpression left, JExpression right)
          prints a bitwise expression
 void visitCompoundAssignmentExpression(JCompoundAssignmentExpression self, int oper, JExpression left, JExpression right)
          prints a compound expression
 void visitEqualityExpression(JEqualityExpression self, boolean equal, JExpression left, JExpression right)
          prints an equality expression
 void visitLogicalComplementExpression(JUnaryExpression self, JExpression expr)
          prints a logical complement 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
 void visitRelationalExpression(JRelationalExpression self, int oper, JExpression left, JExpression right)
          prints a relational expression
 void visitShiftExpression(JShiftExpression self, int oper, JExpression left, JExpression right)
          prints a shift expression
 void visitUnaryMinusExpression(JUnaryExpression self, JExpression expr)
          prints an unary minus expression
 void visitUnaryPlusExpression(JUnaryExpression self, JExpression expr)
          Visitors
 
Methods inherited from class at.dms.kjc.common.ToC
clear, declareInitializedArray, isDeclOnly, passParentheses, setDeclOnly, visitArgs, visitArrayAccessExpression, visitArrayInitializer, visitArrayLengthExpression, visitBooleanLiteral, visitByteLiteral, visitCharLiteral, visitConstructorCall, visitCreatePortalExpression, visitDoubleLiteral, visitFieldDeclaration, visitFieldExpression, visitFloatLiteral, visitFormalParameters, visitIfStatement, visitInitStatement, visitInterfaceTable, visitIntLiteral, visitLatency, visitLatencyMax, visitLatencyRange, visitLatencySet, visitLongLiteral, visitMessageStatement, visitNameExpression, visitNullLiteral, visitShortLiteral, visitStringLiteral, visitSuperExpression, visitSwitchGroup, visitSwitchLabel, visitThisExpression
 
Methods inherited from class at.dms.kjc.common.ToCCommon
getPrinter, makeArrayStrings, makeString, printDecl, printExp, printLParen, printRParen, printType, splitForPrint, visitBlockStatement, visitBreakStatement, visitCastExpression, visitClassExpression, visitCompoundStatement, visitCompoundStatement, visitConditionalExpression, visitContinueStatement, visitDoStatement, visitEmittedTextExpression, visitEmptyStatement, visitExpressionListStatement, visitExpressionStatement, visitForStatement, visitLabeledStatement, visitLocalVariableExpression, visitMarker, visitParenthesedExpression, visitPrintStatement, visitReturnStatement, visitSwitchStatement, visitTypeDeclarationStatement, visitTypeNameExpression, visitUnaryPromoteExpression, visitVariableDeclarationStatement, visitWhileStatement
 
Methods inherited from class at.dms.kjc.SLIREmptyVisitor
visitDynamicToken, visitFileReader, visitFileWriter, visitFunctionPointer, visitIdentity, visitInlineAssembly, visitMainFunction, visitNode, visitPeekExpression, visitPopExpression, visitPortal, 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, visitAssignmentExpression, visitCatchClause, visitClassBody, visitClassDeclaration, visitClassImport, visitComment, visitComments, visitCompilationUnit, visitConstructorDeclaration, visitInnerClassDeclaration, visitInstanceofExpression, visitInterfaceDeclaration, visitJavadoc, visitMethodCallExpression, visitMethodDeclaration, visitNewArrayExpression, visitPackageImport, visitPackageName, visitQualifiedAnonymousCreation, visitQualifiedInstanceCreation, visitSynchronizedStatement, visitThrowStatement, visitTryCatchStatement, visitTryFinallyStatement, visitUnqualifiedAnonymousCreation, visitUnqualifiedInstanceCreation, visitVariableDefinition
 
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.common.CodeGenerator
getPrinter
 

Constructor Detail

InsertCounters

public InsertCounters()

InsertCounters

public InsertCounters(CodegenPrintWriter p)
Method Detail

beginWrapper

protected void beginWrapper(String op)
If profiling is enabled, emit a call to the profiler that indicates operation (as defined in profiler.h) is executed.


endWrapper

protected void endWrapper()
If profiling is enabled, close an emitted call to the profiler.


getNumIds

public static int getNumIds()
Returns the number of ID's that were assigned by the profiler.


visitUnaryPlusExpression

public void visitUnaryPlusExpression(JUnaryExpression self,
                                     JExpression expr)
Visitors

Specified by:
visitUnaryPlusExpression in interface KjcVisitor
Overrides:
visitUnaryPlusExpression in class ToCCommon

visitUnaryMinusExpression

public void visitUnaryMinusExpression(JUnaryExpression self,
                                      JExpression expr)
Description copied from class: ToCCommon
prints an unary minus expression

Specified by:
visitUnaryMinusExpression in interface KjcVisitor
Overrides:
visitUnaryMinusExpression in class ToCCommon

visitBitwiseComplementExpression

public void visitBitwiseComplementExpression(JUnaryExpression self,
                                             JExpression expr)
Description copied from class: ToCCommon
prints a bitwise complement expression

Specified by:
visitBitwiseComplementExpression in interface KjcVisitor
Overrides:
visitBitwiseComplementExpression in class ToCCommon

visitLogicalComplementExpression

public void visitLogicalComplementExpression(JUnaryExpression self,
                                             JExpression expr)
Description copied from class: ToCCommon
prints a logical complement expression

Specified by:
visitLogicalComplementExpression in interface KjcVisitor
Overrides:
visitLogicalComplementExpression in class ToCCommon

visitShiftExpression

public void visitShiftExpression(JShiftExpression self,
                                 int oper,
                                 JExpression left,
                                 JExpression right)
Description copied from class: ToCCommon
prints a shift expression

Specified by:
visitShiftExpression in interface KjcVisitor
Overrides:
visitShiftExpression in class ToCCommon

visitRelationalExpression

public void visitRelationalExpression(JRelationalExpression self,
                                      int oper,
                                      JExpression left,
                                      JExpression right)
Description copied from class: ToC
prints a relational expression

Specified by:
visitRelationalExpression in interface KjcVisitor
Overrides:
visitRelationalExpression in class ToC

visitPrefixExpression

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

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

visitPostfixExpression

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

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

visitBinaryExpression

public void visitBinaryExpression(JBinaryExpression self,
                                  String oper,
                                  JExpression left,
                                  JExpression right)
Description copied from class: ToC
prints an binary expression

Specified by:
visitBinaryExpression in interface KjcVisitor
Overrides:
visitBinaryExpression in class ToC

visitEqualityExpression

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

Specified by:
visitEqualityExpression in interface KjcVisitor
Overrides:
visitEqualityExpression in class ToCCommon

visitCompoundAssignmentExpression

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

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

visitBitwiseExpression

public void visitBitwiseExpression(JBitwiseExpression self,
                                   int oper,
                                   JExpression left,
                                   JExpression right)
Description copied from class: ToC
prints a bitwise expression

Specified by:
visitBitwiseExpression in interface KjcVisitor
Overrides:
visitBitwiseExpression in class ToC