Updating rix output to new standard.
authorandy@galois.com <unknown>
Thu, 14 Dec 2006 23:52:10 +0000 (23:52 +0000)
committerandy@galois.com <unknown>
Thu, 14 Dec 2006 23:52:10 +0000 (23:52 +0000)
includes/RtsExternal.h
rts/Exception.cmm
rts/Hpc.c
rts/Schedule.c

index b917dcf..a105194 100644 (file)
@@ -69,7 +69,7 @@ extern void   freeHaskellFunctionPtr(void* ptr);
 /* Hpc stuff */
 extern int hs_hpc_module(char *modName,int modCount,StgWord64 *tixArr);
 extern void hs_hpc_tick(int globIx,struct StgTSO_ *current_tso);
-extern void hs_hpc_throw(struct StgTSO_ *current_tso);
+extern void hs_hpc_event(char *msg,struct StgTSO_ *current_tso);
 
 
 #if defined(mingw32_HOST_OS)
index 641459b..ae123f9 100644 (file)
@@ -338,7 +338,7 @@ raisezh_fast
 #endif
     
     /* Inform the Hpc that an exception has been thrown */
-    foreign "C" hs_hpc_throw(CurrentTSO);
+    foreign "C" hs_hpc_event("Raise",CurrentTSO);
 
 retry_pop_stack:
     StgTSO_sp(CurrentTSO) = Sp;
index 14f9d80..0f3f3b3 100644 (file)
--- a/rts/Hpc.c
+++ b/rts/Hpc.c
@@ -251,9 +251,9 @@ send_ThreadId(StgTSO *current_tso) {
   // This assumes that there is no real thread 0.
   StgThreadID tid = (current_tso == 0) ? 0 : current_tso->id;
   if (tid != previous_tid) {
-    previous_tid = current_tso->id;
+    previous_tid = tid;
     // How do we print StgWord32's without a cast?
-    fprintf(rixFile,"Thread %d\n",(unsigned int)tid);
+    fprintf(rixFile,"Thread Switch %d\n",(unsigned int)tid);
   }
 }
 
@@ -261,7 +261,7 @@ send_ThreadId(StgTSO *current_tso) {
  * Called on *every* exception thrown
  */
 void
-hs_hpc_throw(StgTSO *current_tso) {
+hs_hpc_event(char *msg,StgTSO *current_tso) {
   // Assumes that we have had at least *one* tick first.
   // All exceptions before the first tick are not reported.
   // The only time this might be an issue is in bootstrapping code,
@@ -272,7 +272,7 @@ hs_hpc_throw(StgTSO *current_tso) {
   if (rixFile != NULL) {
     assert(hpc_inited != 0);
     send_ThreadId(current_tso);
-    fprintf(rixFile,"Throw\n");
+    fprintf(rixFile,"%s\n",msg);
   }
 }
 
index c61e623..8ebedd4 100644 (file)
@@ -1808,6 +1808,9 @@ scheduleHandleThreadFinished (Capability *cap STG_UNUSED, Task *task, StgTSO *t)
     debugTrace(DEBUG_sched, "--++ thread %lu (%s) finished", 
               (unsigned long)t->id, whatNext_strs[t->what_next]);
 
+    /* Inform the Hpc that a thread has finished */
+    hs_hpc_event("Thread Finished",t);
+
 #if defined(GRAN)
       endThread(t, CurrentProc); // clean-up the thread
 #elif defined(PARALLEL_HASKELL)