diff options
author | Simon Marlow <marlowsd@gmail.com> | 2013-09-17 21:48:39 +0100 |
---|---|---|
committer | Simon Marlow <marlowsd@gmail.com> | 2013-10-01 11:10:08 +0100 |
commit | 11b5ce550d1a9bc84dd97629e1cca0b356054898 (patch) | |
tree | 5446e455f6165f50291c8877fdead17b74cae13f /rts/PrimOps.cmm | |
parent | 56084d76eb1b57ad96a9e1c55f3d3e2d134f98d5 (diff) | |
download | haskell-11b5ce550d1a9bc84dd97629e1cca0b356054898.tar.gz |
Remove use of R9, and fix associated bugs
We were passing the function address to stg_gc_prim_p in R9, which was
wrong because the call was a high-level call and didn't declare R9 as
a parameter. Passing R9 as an argument is the right way, but
unfortunately that exposed another bug: we were using the same macro
in some low-level Cmm, where it is illegal to call functions with
arguments (see Note [syntax of cmm files]). So we now have low-level
variants of STK_CHK() and STK_CHK_P() for use in low-level Cmm code.
Diffstat (limited to 'rts/PrimOps.cmm')
-rw-r--r-- | rts/PrimOps.cmm | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/rts/PrimOps.cmm b/rts/PrimOps.cmm index e278bb70ab..e539c7cde3 100644 --- a/rts/PrimOps.cmm +++ b/rts/PrimOps.cmm @@ -2069,7 +2069,7 @@ stg_noDuplicatezh /* no arg list: explicit stack layout */ jump %ENTRY_CODE(Sp(0)) []; } - STK_CHK(WDS(1), stg_noDuplicatezh); + STK_CHK_LL (WDS(1), stg_noDuplicatezh); // leave noDuplicate frame in case the current // computation is suspended and restarted (see above). |