Added "ep" to Trace::creation. The regular macros extract this
authorOrion Lawlor <olawlor@acm.org>
Wed, 26 Mar 2003 23:34:07 +0000 (23:34 +0000)
committerOrion Lawlor <olawlor@acm.org>
Wed, 26 Mar 2003 23:34:07 +0000 (23:34 +0000)
from the envelope, but the array manager passes it in specially
(via TRACE_CREATION_DETAILED)

src/ck-perf/trace-common.C
src/ck-perf/trace-counter.h
src/ck-perf/trace-projections.C
src/ck-perf/trace-projections.h
src/ck-perf/trace-projector.C
src/ck-perf/trace-projector.h
src/ck-perf/trace.h

index 0cb1432a360e9c60a7c913c871c741caad6396d2..c869871dc8cd6e4b58cd3ba9b7b6ae56c9943c83 100644 (file)
@@ -20,6 +20,7 @@
 #include "trace.h"
 #include "trace-common.h"
 #include "allEvents.h"          //projector
+#include "register.h" // for _entryTable
 CpvExtern(int, _traceCoreOn);   // projector
 
 #define DEBUGF(x)          // CmiPrintf x
@@ -204,7 +205,7 @@ extern "C"
 void traceAwaken(CthThread t)
 {
 #if ! CMK_TRACE_IN_CHARM
-  CkpvAccess(_traces)->creation(0);
+  CkpvAccess(_traces)->creation(0, _threadEP);
 #endif
 }
 
@@ -300,4 +301,10 @@ double CmiTraceTimer()
   return TraceTimer();
 }
 
+void TraceArray::creation(envelope *env, int ep, int num=1)
+{ 
+    if (_entryTable[ep]->traceEnabled)
+        ALLDO(creation(env, ep, num));
+}
+
 /*@}*/
index d96cdbcae76f39720449e23e383d504d6d5a0b61..9692fdf878d330b82f1142daaab8dfe7b1c7505f 100644 (file)
@@ -117,7 +117,7 @@ class TraceCounter : public Trace {
       // CmiPrintf("%d/%d userEvent %d\n", CkMyPe(), CkNumPes(), e); 
     }
     //! creation of message(s)
-    void creation(envelope *e, int num=1) { }
+    void creation(envelope *e, int epIdx, int num=1) { }
     //! ???
     void messageRecv(char *env, int pe) { }
     //! begin/end execution of a Charm++ entry point
index 28556ea0246fe03be547baa893668c2578742325..215a2ca5ae25802dd82102b059252a77bef0146e 100644 (file)
@@ -578,18 +578,18 @@ void TraceProjections::userBracketEvent(int e, double bt, double et)
   _logPool->add(USER_EVENT_PAIR, e, 0, TraceTimer(et), curevent++, CkMyPe());
 }
 
-void TraceProjections::creation(envelope *e, int num)
+void TraceProjections::creation(envelope *e, int ep, int num)
 {
   double curTime = TraceTimer();
   if(e==0) {
     CtvAccess(curThreadEvent)=curevent;
-    _logPool->add(CREATION,ForChareMsg,_threadEP,curTime,
+    _logPool->add(CREATION,ForChareMsg,ep,curTime,
                     curevent++,CkMyPe(), 0, 0, 0.0);
   } else {
     int type=e->getMsgtype();
     e->setEvent(curevent);
     for(int i=0; i<num; i++) {
-      _logPool->add(CREATION,type,e->getEpIdx(), curTime,
+      _logPool->add(CREATION,type,ep, curTime,
                     curevent+i,CkMyPe(),e->getTotalsize(), 0, 0.0);
     }
     curevent += num;
index b90260b1bfca9592700d8cf74892177d788986cf..1c1e02f492ec7392b68ed985a93b97e153be6c2c 100644 (file)
@@ -113,7 +113,7 @@ class TraceProjections : public Trace {
     TraceProjections(char **argv);
     void userEvent(int e);
     void userBracketEvent(int e, double bt, double et);
-    void creation(envelope *e, int num=1);
+    void creation(envelope *e, int epIdx, int num=1);
     void creationDone(int num=1);
     void beginExecute(envelope *e);
     void beginExecute(CmiObjId  *tid);
index 082d7fd428843b0aa1ce05b2743e48ebe64b2d03..5b884c8242652b70a712397a5b115d96d55ae23b 100644 (file)
@@ -144,13 +144,9 @@ void TraceProjector::userBracketEvent(int e, double bt, double et)
        _LOG_E_USER_EVENT_PAIR_CHARM(e,bt,et);
 }
 
-void TraceProjector::creation(envelope *e)
+void TraceProjector::creation(envelope *e, int ep,int num)
 {
-       _LOG_E_CREATION_1(e);
-}
-void TraceProjector::creation(envelope *e, int num)
-{
-       _LOG_E_CREATION_N(e, num);
+       _LOG_E_CREATION_N(e, ep, num);
 }
 
 void TraceProjector::beginExecute(envelope *e)
index 6ccfaa02953bb6dcc6533065710c28959801a48a..f2c8d42fc7b75ff8059107dfb49318de8bc38fd4 100644 (file)
@@ -24,8 +24,7 @@ class TraceProjector : public Trace {
     TraceProjector(char **argv);
     void userEvent(int e);
     void userBracketEvent(int e, double bt, double et);
-    void creation(envelope *e, int num=1);
-    void creation(envelope *e);
+    void creation(envelope *e, int ep, int num=1);
     void beginExecute(envelope *e);
     void beginExecute(CmiObjId  *tid);
     void beginExecute(int event,int msgType,int ep,int srcPe,int ml);
index 03676699a2a14d4269876d78fde29b374d8a6e7d..d5666bad874a550a2801ffbebb4a8d67a1b4e1f0 100644 (file)
@@ -36,7 +36,7 @@ class Trace {
     // a pair of begin/end user event has just occured
     virtual void userBracketEvent(int eventID, double bt, double et) {}
     // creation of message(s)
-    virtual void creation(envelope *, int num=1) {}
+    virtual void creation(envelope *, int epIdx, int num=1) {}
     virtual void creationDone(int num=1) {}
     // ???
     virtual void messageRecv(char *env, int pe) {}
@@ -99,7 +99,10 @@ public:
 
     inline void userEvent(int e) { ALLDO(userEvent(e));}
     inline void userBracketEvent(int e,double bt, double et) {ALLDO(userBracketEvent(e,bt,et));}
-    inline void creation(envelope *env, int num=1) { ALLDO(creation(env, num));}
+    
+    /* Creation needs to access _entryTable, so moved into trace-common.C */
+    void creation(envelope *env, int ep, int num=1);
+    
     inline void creationDone(int num=1) { ALLDO(creationDone(num)); }
     inline void beginExecute(envelope *env) {ALLDO(beginExecute(env));}
     inline void beginExecute(CmiObjId *tid) {ALLDO(beginExecute(tid));}
@@ -152,8 +155,9 @@ CkpvExtern(int, traceOnPe);
 
 #define _TRACE_USER_EVENT(x) _TRACE_ONLY(CkpvAccess(_traces)->userEvent(x))
 #define _TRACE_USER_EVENT_BRACKET(x,bt,et) _TRACE_ONLY(CkpvAccess(_traces)->userBracketEvent(x,bt,et))
-#define _TRACE_CREATION_1(env) _TRACE_ONLY(CkpvAccess(_traces)->creation(env))
-#define _TRACE_CREATION_N(env, num) _TRACE_ONLY(CkpvAccess(_traces)->creation(env, num))
+#define _TRACE_CREATION_1(env) _TRACE_ONLY(CkpvAccess(_traces)->creation(env,env->getEpIdx()))
+#define _TRACE_CREATION_DETAILED(env,ep) _TRACE_ONLY(CkpvAccess(_traces)->creation(env,ep))
+#define _TRACE_CREATION_N(env, num) _TRACE_ONLY(CkpvAccess(_traces)->creation(env,env->getEpIdx(), num))
 #define _TRACE_CREATION_DONE(num) _TRACE_ONLY(CkpvAccess(_traces)->creationDone(num))
 #define _TRACE_BEGIN_EXECUTE(env) _TRACE_ONLY(CkpvAccess(_traces)->beginExecute(env))
 #define _TRACE_BEGIN_EXECUTE_DETAILED(evt,typ,ep,src,mlen) \