summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlex Biehl <alexbiehl@gmail.com>2016-11-10 13:12:30 +0100
committerGitHub <noreply@github.com>2016-11-10 13:12:30 +0100
commit2325afe92cf73479756d3a29af82588b7bbe9d92 (patch)
treeff7e3a775a73477f9c4290792a48044d4cc608ab
parent2e8463b232054b788b73e6551947a9434aa76009 (diff)
downloadhaskell-2325afe92cf73479756d3a29af82588b7bbe9d92.tar.gz
Fix comment about pointer tagging
`Lcall` enters the closure. If it has tags we jump directly to `Lret`. Confirmed with some generated cmm code: ``` R1 = _s2pP::P64; Sp = Sp - 8; if (R1 & 7 != 0) goto c2x0; else goto c2x1; c2x1: call (I64[R1])(R1) returns to c2x0, args: 8, res: 8, upd: 8; c2x0: _s2pQ::P64 = R1; ```
-rw-r--r--compiler/codeGen/StgCmmExpr.hs2
1 files changed, 1 insertions, 1 deletions
diff --git a/compiler/codeGen/StgCmmExpr.hs b/compiler/codeGen/StgCmmExpr.hs
index fdd902d8c7..cd73ec55bf 100644
--- a/compiler/codeGen/StgCmmExpr.hs
+++ b/compiler/codeGen/StgCmmExpr.hs
@@ -872,7 +872,7 @@ emitEnter fun = do
-- The generated code will be something like this:
--
-- R1 = fun -- copyout
- -- if (fun & 7 != 0) goto Lcall else goto Lret
+ -- if (fun & 7 != 0) goto Lret else goto Lcall
-- Lcall:
-- call [fun] returns to Lret
-- Lret: