diff options
author | Alex Biehl <alexbiehl@gmail.com> | 2016-11-10 13:12:30 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2016-11-10 13:12:30 +0100 |
commit | 2325afe92cf73479756d3a29af82588b7bbe9d92 (patch) | |
tree | ff7e3a775a73477f9c4290792a48044d4cc608ab | |
parent | 2e8463b232054b788b73e6551947a9434aa76009 (diff) | |
download | haskell-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.hs | 2 |
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: |