/* -----------------------------------------------------------------------------
- * $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
*
*
* ---------------------------------------------------------------------------*/
+#include "Stg.h"
#include "Rts.h"
#include "Exception.h"
#include "Schedule.h"
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
#if defined(PROFILING)
-
/* Debugging tool: on raising an exception, show where we are. */
/* ToDo: currently this is a hack. Would be much better if
if (RtsFlags.ProfFlags.showCCSOnException) {
STGCALL2(print_ccs,stderr,CCCS);
}
-
#endif
p = Su;
*/
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) {