projects
/
ghc-hetmet.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
[project @ 2004-09-14 16:47:57 by panne]
[ghc-hetmet.git]
/
ghc
/
rts
/
PrimOps.cmm
diff --git
a/ghc/rts/PrimOps.cmm
b/ghc/rts/PrimOps.cmm
index
59a613d
..
c9556f4
100644
(file)
--- a/
ghc/rts/PrimOps.cmm
+++ b/
ghc/rts/PrimOps.cmm
@@
-316,6
+316,7
@@
finalizzeWeakzh_fast
LDV_RECORD_CREATE(w);
f = StgWeak_finalizer(w);
LDV_RECORD_CREATE(w);
f = StgWeak_finalizer(w);
+ StgDeadWeak_link(w) = StgWeak_link(w);
/* return the finalizer */
if (f == stg_NO_FINALIZER_closure) {
/* return the finalizer */
if (f == stg_NO_FINALIZER_closure) {
@@
-933,9
+934,9
@@
isEmptyMVarzh_fast
/* args: R1 = MVar closure */
if (GET_INFO(R1) == stg_EMPTY_MVAR_info) {
/* args: R1 = MVar closure */
if (GET_INFO(R1) == stg_EMPTY_MVAR_info) {
- RET_N(0);
- } else {
RET_N(1);
RET_N(1);
+ } else {
+ RET_N(0);
}
}
}
}
@@
-1438,7
+1439,7
@@
asyncReadzh_fast
/* could probably allocate this on the heap instead */
"ptr" ares = foreign "C" stgMallocBytes(SIZEOF_StgAsyncIOResult,
stg_asyncReadzh_malloc_str);
/* could probably allocate this on the heap instead */
"ptr" ares = foreign "C" stgMallocBytes(SIZEOF_StgAsyncIOResult,
stg_asyncReadzh_malloc_str);
- reqID = foreign "C" addIORequest(R1,FALSE,R2,R3,R4);
+ reqID = foreign "C" addIORequest(R1, 0/*FALSE*/,R2,R3,R4 "ptr");
StgAsyncIOResult_reqID(ares) = reqID;
StgAsyncIOResult_len(ares) = 0;
StgAsyncIOResult_errCode(ares) = 0;
StgAsyncIOResult_reqID(ares) = reqID;
StgAsyncIOResult_len(ares) = 0;
StgAsyncIOResult_errCode(ares) = 0;
@@
-1447,7
+1448,7
@@
asyncReadzh_fast
jump stg_block_async;
}
jump stg_block_async;
}
-STRING(asyncWritezh_malloc_str, "asyncWritezh_fast")
+STRING(stg_asyncWritezh_malloc_str, "asyncWritezh_fast")
asyncWritezh_fast
{
W_ ares;
asyncWritezh_fast
{
W_ ares;
@@
-1458,8
+1459,8
@@
asyncWritezh_fast
StgTSO_why_blocked(CurrentTSO) = BlockedOnWrite::I16;
"ptr" ares = foreign "C" stgMallocBytes(SIZEOF_StgAsyncIOResult,
StgTSO_why_blocked(CurrentTSO) = BlockedOnWrite::I16;
"ptr" ares = foreign "C" stgMallocBytes(SIZEOF_StgAsyncIOResult,
- asyncWritezh_malloc_str);
- reqID = foreign "C" addIORequest(R1,TRUE,R2,R3,R4);
+ stg_asyncWritezh_malloc_str);
+ reqID = foreign "C" addIORequest(R1, 1/*TRUE*/,R2,R3,R4 "ptr");
StgAsyncIOResult_reqID(ares) = reqID;
StgAsyncIOResult_len(ares) = 0;
StgAsyncIOResult_reqID(ares) = reqID;
StgAsyncIOResult_len(ares) = 0;
@@
-1469,7
+1470,7
@@
asyncWritezh_fast
jump stg_block_async;
}
jump stg_block_async;
}
-STRING(asyncDoProczh_malloc_str, "asyncDoProczh_fast")
+STRING(stg_asyncDoProczh_malloc_str, "asyncDoProczh_fast")
asyncDoProczh_fast
{
W_ ares;
asyncDoProczh_fast
{
W_ ares;
@@
-1481,8
+1482,8
@@
asyncDoProczh_fast
/* could probably allocate this on the heap instead */
"ptr" ares = foreign "C" stgMallocBytes(SIZEOF_StgAsyncIOResult,
/* could probably allocate this on the heap instead */
"ptr" ares = foreign "C" stgMallocBytes(SIZEOF_StgAsyncIOResult,
- asyncDoProczh_malloc_str);
- reqID = foreign "C" addDoProcRequest(R1,R2);
+ stg_asyncDoProczh_malloc_str);
+ reqID = foreign "C" addDoProcRequest(R1 "ptr",R2 "ptr");
StgAsyncIOResult_reqID(ares) = reqID;
StgAsyncIOResult_len(ares) = 0;
StgAsyncIOResult_errCode(ares) = 0;
StgAsyncIOResult_reqID(ares) = reqID;
StgAsyncIOResult_len(ares) = 0;
StgAsyncIOResult_errCode(ares) = 0;