On 17/03/2012 16:05, Ian Lynagh wrote:
Repository : ssh://darcs.haskell.org//srv/darcs/ghc
On branch : master
http://hackage.haskell.org/trac/ghc/changeset/69f98b8fe3f70fa053494abaf01242038c4335c0
---------------------------------------------------------------
commit 69f98b8fe3f70fa053494abaf01242038c4335c0
Author: Ian Lynagh<[email protected]>
Date: Thu Mar 15 15:07:59 2012 +0000
Fix stg_block_async on unreg compilers
This is only defined on Windows, so hadn't come up in our Linux
unreg builds.
---------------------------------------------------------------
rts/HeapStackCheck.cmm | 6 ++++++
rts/ghc.mk | 4 ++++
2 files changed, 10 insertions(+), 0 deletions(-)
diff --git a/rts/HeapStackCheck.cmm b/rts/HeapStackCheck.cmm
index 74545af..7ba44d3 100644
--- a/rts/HeapStackCheck.cmm
+++ b/rts/HeapStackCheck.cmm
@@ -679,10 +679,16 @@ INFO_TABLE_RET( stg_block_async, RET_SMALL, W_ unused )
len = StgAsyncIOResult_len(ares);
errC = StgAsyncIOResult_errCode(ares);
foreign "C" free(ares "ptr");
+#ifdef GhcUnregisterised
+ Sp(1) = errC;
+ Sp(0) = len;
+ jump %ENTRY_CODE(Sp(2));
+#else
R1 = len;
Sp_adj(1);
Sp(0) = errC;
jump %ENTRY_CODE(Sp(1));
+#endif
}
Incidentally, a better fix is to use RET_NN(), which will avoid the
#ifdef. See PrimOps.cmm for some examples.
Cheers,
Simon
_______________________________________________
Cvs-ghc mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/cvs-ghc