[project @ 2002-12-05 23:49:43 by mthomas]
[ghc-hetmet.git] / ghc / includes / Updates.h
index 9c17466..87b7bd6 100644 (file)
@@ -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;                         \
 #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
      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);