projects
/
ghc-hetmet.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Change the representation of the MVar blocked queue
[ghc-hetmet.git]
/
includes
/
rts
/
storage
/
Closures.h
diff --git
a/includes/rts/storage/Closures.h
b/includes/rts/storage/Closures.h
index
d7498e2
..
a0ff738
100644
(file)
--- a/
includes/rts/storage/Closures.h
+++ b/
includes/rts/storage/Closures.h
@@
-127,6
+127,14
@@
typedef struct {
StgInfoTable *saved_info;
} StgIndStatic;
StgInfoTable *saved_info;
} StgIndStatic;
+typedef struct StgBlockingQueue_ {
+ StgHeader header;
+ struct StgBlockingQueue_ *link; // here so it looks like an IND
+ StgClosure *bh; // the BLACKHOLE
+ StgTSO *owner;
+ struct MessageBlackHole_ *queue;
+} StgBlockingQueue;
+
typedef struct {
StgHeader header;
StgWord words;
typedef struct {
StgHeader header;
StgWord words;
@@
-297,11
+305,17
@@
typedef struct {
/* Concurrent communication objects */
/* Concurrent communication objects */
+typedef struct StgMVarTSOQueue_ {
+ StgHeader header;
+ struct StgMVarTSOQueue_ *link;
+ struct StgTSO_ *tso;
+} StgMVarTSOQueue;
+
typedef struct {
typedef struct {
- StgHeader header;
- struct StgTSO_ *head;
- struct StgTSO_ *tail;
- StgClosure* value;
+ StgHeader header;
+ struct StgMVarTSOQueue_ *head;
+ struct StgMVarTSOQueue_ *tail;
+ StgClosure* value;
} StgMVar;
} StgMVar;
@@
-433,10
+447,17
@@
typedef struct MessageWakeup_ {
typedef struct MessageThrowTo_ {
StgHeader header;
typedef struct MessageThrowTo_ {
StgHeader header;
- Message *link;
+ struct MessageThrowTo_ *link;
StgTSO *source;
StgTSO *target;
StgClosure *exception;
} MessageThrowTo;
StgTSO *source;
StgTSO *target;
StgClosure *exception;
} MessageThrowTo;
+typedef struct MessageBlackHole_ {
+ StgHeader header;
+ struct MessageBlackHole_ *link;
+ StgTSO *tso;
+ StgClosure *bh;
+} MessageBlackHole;
+
#endif /* RTS_STORAGE_CLOSURES_H */
#endif /* RTS_STORAGE_CLOSURES_H */