Repository : ssh://darcs.haskell.org//srv/darcs/ghc

On branch  : newcg

http://hackage.haskell.org/trac/ghc/changeset/e85a8771e657d5f62336ff72e256e0d11346c14b

>---------------------------------------------------------------

commit e85a8771e657d5f62336ff72e256e0d11346c14b
Author: Simon Marlow <[email protected]>
Date:   Wed Mar 7 14:55:18 2012 +0000

    fix the updfr offset in the jump after newCAF

>---------------------------------------------------------------

 compiler/codeGen/StgCmmBind.hs |    3 ++-
 1 files changed, 2 insertions(+), 1 deletions(-)

diff --git a/compiler/codeGen/StgCmmBind.hs b/compiler/codeGen/StgCmmBind.hs
index 7dbc995..5838628 100644
--- a/compiler/codeGen/StgCmmBind.hs
+++ b/compiler/codeGen/StgCmmBind.hs
@@ -660,13 +660,14 @@ link_caf _is_upd = do
         -- node is live, so save it.
 
   -- see Note [atomic CAF entry] in rts/sm/Storage.c
+  ; updfr  <- getUpdFrameOff
   ; emit =<< mkCmmIfThen
       (CmmMachOp mo_wordEq [ CmmReg (CmmLocal ret), CmmLit zeroCLit])
         -- re-enter R1.  Doing this directly is slightly dodgy; we're
         -- assuming lots of things, like the stack pointer hasn't
         -- moved since we entered the CAF.
        (let target = entryCode (closureInfoPtr (CmmReg nodeReg)) in
-        mkJump target [] 0)
+        mkJump target [] updfr)
 
   ; return hp_rel }
 



_______________________________________________
Cvs-ghc mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/cvs-ghc

Reply via email to