[project @ 2001-08-29 15:12:21 by sewardj]
[ghc-hetmet.git] / ghc / rts / Exception.hc
index 564420e..f7b5887 100644 (file)
@@ -1,5 +1,5 @@
 /* -----------------------------------------------------------------------------
- * $Id: Exception.hc,v 1.18 2000/12/04 12:31:20 simonmar Exp $
+ * $Id: Exception.hc,v 1.21 2001/08/17 14:44:54 simonmar Exp $
  *
  * (c) The GHC Team, 1998-2000
  *
@@ -7,6 +7,7 @@
  *
  * ---------------------------------------------------------------------------*/
 
+#include "Stg.h"
 #include "Rts.h"
 #include "Exception.h"
 #include "Schedule.h"
@@ -75,12 +76,12 @@ FN_(stg_unblockAsyncExceptionszh_ret_entry)
     ASSERT(CurrentTSO->blocked_exceptions != NULL);
 #if defined(GRAN)
       awakenBlockedQueue(CurrentTSO->blocked_exceptions, 
-                        CurrentTSO->block_info.closure);
+                        (StgClosure*)NULL); 
 #elif defined(PAR)
-      // is CurrentTSO->block_info.closure always set to the node
-      // holding the blocking queue !? -- HWL
+      /* we don't need node info (2nd arg) in this case
+        (note that CurrentTSO->block_info.closure isn't always set) */
       awakenBlockedQueue(CurrentTSO->blocked_exceptions, 
-                        CurrentTSO->block_info.closure);
+                        (StgClosure*)NULL); 
 #else
     awakenBlockedQueue(CurrentTSO->blocked_exceptions);
 #endif
@@ -348,7 +349,6 @@ FN_(raisezh_fast)
 
 
 #if defined(PROFILING)
-
     /* Debugging tool: on raising an  exception, show where we are. */
 
     /* ToDo: currently this is a hack.  Would be much better if
@@ -357,7 +357,6 @@ FN_(raisezh_fast)
     if (RtsFlags.ProfFlags.showCCSOnException) {
       STGCALL2(print_ccs,stderr,CCCS);
     }
-
 #endif
 
     p = Su;
@@ -368,7 +367,7 @@ FN_(raisezh_fast)
      */
     raise_closure = (StgClosure *)RET_STGCALL1(P_,allocate,
                                               sizeofW(StgClosure)+1);
-    raise_closure->header.info = &stg_raise_info;
+    SET_HDR(raise_closure, &stg_raise_info, CCCS);
     raise_closure->payload[0] = R1.cl;
 
     while (1) {