diff options
author | Michael D. Adams <t-madams@microsoft.com> | 2007-06-27 15:15:03 +0000 |
---|---|---|
committer | Michael D. Adams <t-madams@microsoft.com> | 2007-06-27 15:15:03 +0000 |
commit | 1f46671fe24c7155ee64091b71b77dd66909e7a0 (patch) | |
tree | da9d2099466475b4f291b0e488bcbe2fa4e072d9 /compiler/cmm/PprCmm.hs | |
parent | f96e9aa0444de0e673b3c4055c6e43299639bc5b (diff) | |
download | haskell-1f46671fe24c7155ee64091b71b77dd66909e7a0.tar.gz |
Added stack checks to the CPS algorithm
This eliminates one of the panics introduced by
the previous patch:
'First pass at implementing info tables for CPS'
The other panic introduced by that patch still remains.
It was due to the need to convert from a
ContinuationInfo to a CmmInfo.
(codeGen/CgInfoTbls.hs:emitClosureCodeAndInfoTable)
(codeGen/CgInfoTbls.hs:emitReturnTarget)
Diffstat (limited to 'compiler/cmm/PprCmm.hs')
-rw-r--r-- | compiler/cmm/PprCmm.hs | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/compiler/cmm/PprCmm.hs b/compiler/cmm/PprCmm.hs index 55a8014b46..97170a1c33 100644 --- a/compiler/cmm/PprCmm.hs +++ b/compiler/cmm/PprCmm.hs @@ -126,7 +126,9 @@ pprTop (CmmData section ds) = -- For ideas on how to refine it, they used to be printed in the -- style of C--'s 'stackdata' declaration, just inside the proc body, -- and were labelled with the procedure name ++ "_info". -pprInfo CmmNonInfo = empty +pprInfo (CmmNonInfo gc_target) = + ptext SLIT("gc_target: ") <> + maybe (ptext SLIT("<none>")) pprBlockId gc_target pprInfo (CmmInfo (ProfilingInfo closure_type closure_desc) gc_target tag info) = vcat [ptext SLIT("type: ") <> pprLit closure_type, @@ -140,7 +142,7 @@ pprTypeInfo (ConstrInfo layout constr descr) = vcat [ptext SLIT("ptrs: ") <> integer (toInteger (fst layout)), ptext SLIT("nptrs: ") <> integer (toInteger (snd layout)), ptext SLIT("constructor: ") <> integer (toInteger constr), - ppr descr] + pprLit descr] pprTypeInfo (FunInfo layout srt fun_type arity args slow_entry) = vcat [ptext SLIT("ptrs: ") <> integer (toInteger (fst layout)), ptext SLIT("nptrs: ") <> integer (toInteger (snd layout)), @@ -154,6 +156,9 @@ pprTypeInfo (ThunkInfo layout srt) = vcat [ptext SLIT("ptrs: ") <> integer (toInteger (fst layout)), ptext SLIT("nptrs: ") <> integer (toInteger (snd layout)), ptext SLIT("srt: ") <> ppr srt] +pprTypeInfo (ThunkSelectorInfo offset srt) = + vcat [ptext SLIT("ptrs: ") <> integer (toInteger offset), + ptext SLIT("srt: ") <> ppr srt] pprTypeInfo (ContInfo stack srt) = vcat [ptext SLIT("stack: ") <> ppr stack, ptext SLIT("srt: ") <> ppr srt] |