/* -----------------------------------------------------------------------------
- * $Id: StgMacros.h,v 1.44 2001/12/10 17:55:40 sewardj Exp $
+ * $Id: StgMacros.h,v 1.46 2002/02/15 22:14:27 sof Exp $
*
* (c) The GHC Team, 1998-1999
*
TICK_UPD_BH_UPDATABLE(); \
{ \
bdescr *bd = Bdescr(R1.p); \
- if (bd->back != (bdescr *)BaseReg) { \
- if (bd->gen->no >= 1 || bd->step->no >= 1) { \
+ if (bd->u.back != (bdescr *)BaseReg) { \
+ if (bd->gen_no >= 1 || bd->step->no >= 1) { \
LOCK_THUNK(info); \
} else { \
EXTFUN_RTS(stg_gc_enter_1_hponly); \
TICK_UPD_BH_SINGLE_ENTRY(); \
{ \
bdescr *bd = Bdescr(R1.p); \
- if (bd->back != (bdescr *)BaseReg) { \
- if (bd->gen->no >= 1 || bd->step->no >= 1) { \
+ if (bd->u.back != (bdescr *)BaseReg) { \
+ if (bd->gen_no >= 1 || bd->step->no >= 1) { \
LOCK_THUNK(info); \
} else { \
EXTFUN_RTS(stg_gc_enter_1_hponly); \
* Suspending/resuming threads for doing external C-calls (_ccall_GC).
* These functions are defined in rts/Schedule.c.
*/
-StgInt suspendThread ( StgRegTable * );
-StgRegTable * resumeThread ( StgInt );
+StgInt suspendThread ( StgRegTable *, rtsBool);
+StgRegTable * resumeThread ( StgInt, rtsBool );
-#define SUSPEND_THREAD(token) \
+#define SUSPEND_THREAD(token,threaded) \
SaveThreadState(); \
- token = suspendThread(BaseReg);
+ token = suspendThread(BaseReg,threaded);
#ifdef SMP
-#define RESUME_THREAD(token) \
- BaseReg = resumeThread(token); \
+#define RESUME_THREAD(token,threaded) \
+ BaseReg = resumeThread(token,threaded); \
LoadThreadState();
#else
-#define RESUME_THREAD(token) \
- (void)resumeThread(token); \
+#define RESUME_THREAD(token,threaded) \
+ (void)resumeThread(token,threaded); \
LoadThreadState();
#endif