projects
/
ghc-hetmet.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
[project @ 2003-08-20 15:06:23 by simonmar]
[ghc-hetmet.git]
/
ghc
/
includes
/
Updates.h
diff --git
a/ghc/includes/Updates.h
b/ghc/includes/Updates.h
index
0820b50
..
3b9b5c0
100644
(file)
--- a/
ghc/includes/Updates.h
+++ b/
ghc/includes/Updates.h
@@
-1,5
+1,5
@@
/* -----------------------------------------------------------------------------
/* -----------------------------------------------------------------------------
- * $Id: Updates.h,v 1.29 2003/01/25 15:54:48 wolfgang Exp $
+ * $Id: Updates.h,v 1.33 2003/07/28 16:05:38 simonmar Exp $
*
* (c) The GHC Team, 1998-1999
*
*
* (c) The GHC Team, 1998-1999
*
@@
-27,16
+27,22
@@
*/
#ifdef TICKY_TICKY
*/
#ifdef TICKY_TICKY
-# define UPD_IND(updclosure, heapptr) UPD_PERM_IND(updclosure,heapptr)
+# define UPD_IND(updclosure, heapptr) \
+ UPD_PERM_IND(updclosure,heapptr)
+# define UPD_SPEC_IND(updclosure, ind_info, heapptr, and_then) \
+ UPD_PERM_IND(updclosure,heapptr); and_then
#else
#else
-# define UPD_IND(updclosure, heapptr) UPD_REAL_IND(updclosure,heapptr)
+# define UPD_IND(updclosure, heapptr) \
+ UPD_REAL_IND(updclosure,&stg_IND_info,heapptr,)
+# define UPD_SPEC_IND(updclosure, ind_info, heapptr, and_then) \
+ UPD_REAL_IND(updclosure,ind_info,heapptr,and_then)
#endif
/* UPD_IND actually does a PERM_IND if TICKY_TICKY is on;
if you *really* need an IND use UPD_REAL_IND
*/
#ifdef SMP
#endif
/* UPD_IND actually does a PERM_IND if TICKY_TICKY is on;
if you *really* need an IND use UPD_REAL_IND
*/
#ifdef SMP
-#define UPD_REAL_IND(updclosure, heapptr) \
+#define UPD_REAL_IND(updclosure, ind_info, heapptr, and_then) \
{ \
const StgInfoTable *info; \
if (Bdescr((P_)updclosure)->u.back != (bdescr *)BaseReg) { \
{ \
const StgInfoTable *info; \
if (Bdescr((P_)updclosure)->u.back != (bdescr *)BaseReg) { \
@@
-45,19
+51,21
@@
info = updclosure->header.info; \
} \
AWAKEN_BQ(info,updclosure); \
info = updclosure->header.info; \
} \
AWAKEN_BQ(info,updclosure); \
- updateWithIndirection(info, \
+ updateWithIndirection(info, ind_info, \
(StgClosure *)updclosure, \
(StgClosure *)updclosure, \
- (StgClosure *)heapptr); \
+ (StgClosure *)heapptr, \
+ and_then); \
}
#else
}
#else
-#define UPD_REAL_IND(updclosure, heapptr) \
+#define UPD_REAL_IND(updclosure, ind_info, heapptr, and_then) \
{ \
const StgInfoTable *info; \
info = ((StgClosure *)updclosure)->header.info; \
AWAKEN_BQ(info,updclosure); \
{ \
const StgInfoTable *info; \
info = ((StgClosure *)updclosure)->header.info; \
AWAKEN_BQ(info,updclosure); \
- updateWithIndirection(info, \
+ updateWithIndirection(((StgClosure *)updclosure)->header.info, ind_info, \
(StgClosure *)updclosure, \
(StgClosure *)updclosure, \
- (StgClosure *)heapptr); \
+ (StgClosure *)heapptr, \
+ and_then); \
}
#endif
}
#endif
@@
-89,9
+97,9
@@
const StgInfoTable *info; \
info = updclosure->header.info; \
AWAKEN_BQ(info,updclosure); \
const StgInfoTable *info; \
info = updclosure->header.info; \
AWAKEN_BQ(info,updclosure); \
- updateWithIndirection(info, \
+ updateWithIndirection(info,&stg_IND_info, \
(StgClosure *)updclosure, \
(StgClosure *)updclosure, \
- (StgClosure *)heapptr); \
+ (StgClosure *)heapptr,); \
}
#elif defined(RTS_SUPPORTS_THREADS)
}
#elif defined(RTS_SUPPORTS_THREADS)
@@
-111,9
+119,9
@@
const StgInfoTable *info; \
info = ((StgClosure *)updclosure)->header.info; \
AWAKEN_BQ_NOLOCK(info,updclosure); \
const StgInfoTable *info; \
info = ((StgClosure *)updclosure)->header.info; \
AWAKEN_BQ_NOLOCK(info,updclosure); \
- updateWithIndirection(info, \
+ updateWithIndirection(info,&stg_IND_info, \
(StgClosure *)updclosure, \
(StgClosure *)updclosure, \
- (StgClosure *)heapptr); \
+ (StgClosure *)heapptr,); \
}
# endif
}
# endif