X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=ghc%2Frts%2FPrimOps.cmm;h=c9556f4d33dfc3226103d067f6ca2907c4e1b3f0;hb=4b17256112ecbee54dd4437f29c711bbfae239c7;hp=59a613d79f90256d9f479fbc3090293e6bd6efdf;hpb=423d477bfecd490de1449c59325c8776f91d7aac;p=ghc-hetmet.git diff --git a/ghc/rts/PrimOps.cmm b/ghc/rts/PrimOps.cmm index 59a613d..c9556f4 100644 --- a/ghc/rts/PrimOps.cmm +++ b/ghc/rts/PrimOps.cmm @@ -316,6 +316,7 @@ finalizzeWeakzh_fast LDV_RECORD_CREATE(w); f = StgWeak_finalizer(w); + StgDeadWeak_link(w) = StgWeak_link(w); /* 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) { - RET_N(0); - } else { 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); - 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; @@ -1447,7 +1448,7 @@ asyncReadzh_fast jump stg_block_async; } -STRING(asyncWritezh_malloc_str, "asyncWritezh_fast") +STRING(stg_asyncWritezh_malloc_str, "asyncWritezh_fast") asyncWritezh_fast { W_ ares; @@ -1458,8 +1459,8 @@ asyncWritezh_fast 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; @@ -1469,7 +1470,7 @@ asyncWritezh_fast jump stg_block_async; } -STRING(asyncDoProczh_malloc_str, "asyncDoProczh_fast") +STRING(stg_asyncDoProczh_malloc_str, "asyncDoProczh_fast") 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, - 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;