X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;ds=sidebyside;f=ghc%2Fincludes%2FUpdates.h;h=87b7bd62671786c5eb3f3775597d05ea60c3e233;hb=f0f6913272d9475a6ac1b2a3cc59105c5756fba3;hp=9c174660ed46c5b452ac67bc5acbc1a564490d59;hpb=ee3e75b51e5a86dda79bb990a83bfaa49915a22a;p=ghc-hetmet.git diff --git a/ghc/includes/Updates.h b/ghc/includes/Updates.h index 9c17466..87b7bd6 100644 --- a/ghc/includes/Updates.h +++ b/ghc/includes/Updates.h @@ -1,5 +1,5 @@ /* ----------------------------------------------------------------------------- - * $Id: Updates.h,v 1.22 2001/01/29 17:23:41 simonmar Exp $ + * $Id: Updates.h,v 1.27 2001/12/10 18:07:09 sof Exp $ * * (c) The GHC Team, 1998-1999 * @@ -39,7 +39,7 @@ #define UPD_REAL_IND(updclosure, heapptr) \ { \ const StgInfoTable *info; \ - if (Bdescr((P_)updclosure)->back != (bdescr *)BaseReg) { \ + if (Bdescr((P_)updclosure)->u.back != (bdescr *)BaseReg) { \ info = LOCK_CLOSURE(updclosure); \ } else { \ info = updclosure->header.info; \ @@ -104,7 +104,7 @@ #if defined(PAR) /* - In a parallel setup several types of closures, might have a blocking queue: + In a parallel setup several types of closures might have a blocking queue: BLACKHOLE_BQ ... same as in the default concurrent setup; it will be reawakened via calling UPD_IND on that closure after having finished the computation of the graph @@ -121,7 +121,7 @@ TSO ... as in the default concurrent setup BLOCKED_FETCH ... indicating that a TSO on another PE is waiting for the result of the current computation - CONSTR ... a RBHSave closure (which contains data ripped out of + CONSTR ... an RBHSave closure (which contains data ripped out of the closure to make room for a blocking queue; since it only contains data we use the exisiting type of a CONSTR closure); this closure is the end of a @@ -136,9 +136,7 @@ extern void awakenBlockedQueue(StgBlockingQueueElement *q, StgClosure *node); if (info == &stg_BLACKHOLE_BQ_info || \ info == &stg_FETCH_ME_BQ_info || \ get_itbl(closure)->type == RBH) { \ - StgBlockingQueueElement *bqe = ((StgBlockingQueue *)closure)->blocking_queue;\ - ASSERT(bqe!=END_BQ_QUEUE); \ - DO_AWAKEN_BQ(bqe, closure); \ + DO_AWAKEN_BQ(((StgBlockingQueue *)closure)->blocking_queue, closure); \ } #elif defined(GRAN) @@ -152,9 +150,7 @@ extern void awakenBlockedQueue(StgBlockingQueueElement *q, StgClosure *node); #define AWAKEN_BQ(info,closure) \ if (info == &stg_BLACKHOLE_BQ_info || \ get_itbl(closure)->type == RBH) { \ - StgBlockingQueueElement *bqe = ((StgBlockingQueue *)closure)->blocking_queue;\ - ASSERT(bqe!=END_BQ_QUEUE); \ - DO_AWAKEN_BQ(bqe, closure); \ + DO_AWAKEN_BQ(((StgBlockingQueue *)closure)->blocking_queue, closure); \ } @@ -182,7 +178,9 @@ extern void awakenBlockedQueue(StgTSO *q); ------------------------------------------------------------------------- */ #if defined(PROFILING) -#define PUSH_STD_CCCS(frame) frame->header.prof.ccs = CCCS +// frame->header.prof.hp.rs = NULL (or frame-header.prof.hp.ldvw = 0) is unnecessary +// because it is not used anyhow. +#define PUSH_STD_CCCS(frame) (frame->header.prof.ccs = CCCS) #else #define PUSH_STD_CCCS(frame) #endif @@ -239,21 +237,17 @@ extern void newCAF(StgClosure*); SET_INFO((StgInd *)cafptr,(const StgInfoTable*)&stg_IND_STATIC_info);\ } -#ifdef INTERPRETER -extern void newCAF_made_by_Hugs(StgCAF*); -#endif - /* ----------------------------------------------------------------------------- Update-related prototypes -------------------------------------------------------------------------- */ +EXTFUN_RTS(__stg_update_PAP); + DLL_IMPORT_RTS extern STGFUN(stg_upd_frame_entry); extern DLL_IMPORT_RTS const StgInfoTable stg_PAP_info; DLL_IMPORT_RTS STGFUN(stg_PAP_entry); -EXTFUN_RTS(stg_update_PAP); - extern DLL_IMPORT_RTS const StgInfoTable stg_AP_UPD_info; DLL_IMPORT_RTS STGFUN(stg_AP_UPD_entry);