diff options
author | Michael D. Adams <t-madams@microsoft.com> | 2007-07-03 21:44:13 +0000 |
---|---|---|
committer | Michael D. Adams <t-madams@microsoft.com> | 2007-07-03 21:44:13 +0000 |
commit | 1f8efd5d6214c490ef4942134abf5de9f468d29c (patch) | |
tree | 59453bd516eba174ebeba10e0a44af236d3103bd /compiler/codeGen | |
parent | 55f8b001f06d0a2a1e9b0e84cbaa5f2f109270df (diff) | |
download | haskell-1f8efd5d6214c490ef4942134abf5de9f468d29c.tar.gz |
Added support for update frames to the CPS pass
(This required a bit of refactoring of CmmInfo.)
Diffstat (limited to 'compiler/codeGen')
-rw-r--r-- | compiler/codeGen/CgInfoTbls.hs | 12 | ||||
-rw-r--r-- | compiler/codeGen/CgMonad.lhs | 2 |
2 files changed, 8 insertions, 6 deletions
diff --git a/compiler/codeGen/CgInfoTbls.hs b/compiler/codeGen/CgInfoTbls.hs index 6d270aef16..f6277f1a71 100644 --- a/compiler/codeGen/CgInfoTbls.hs +++ b/compiler/codeGen/CgInfoTbls.hs @@ -89,12 +89,12 @@ mkCmmInfo cl_info = do info = ConstrInfo (ptrs, nptrs) (fromIntegral (dataConTagZ con)) conName - return $ CmmInfo prof gc_target cl_type info + return $ CmmInfo gc_target Nothing (CmmInfoTable prof cl_type info) ClosureInfo { closureName = name, closureLFInfo = lf_info, closureSRT = srt } -> - return $ CmmInfo prof gc_target cl_type info + return $ CmmInfo gc_target Nothing (CmmInfoTable prof cl_type info) where info = case lf_info of @@ -145,10 +145,12 @@ emitReturnTarget name stmts ; blks <- cgStmtsToBlocks stmts ; frame <- mkStackLayout ; let info = CmmInfo - (ProfilingInfo zeroCLit zeroCLit) gc_target - rET_SMALL -- cmmToRawCmm may convert it to rET_BIG - (ContInfo frame srt_info) + Nothing + (CmmInfoTable + (ProfilingInfo zeroCLit zeroCLit) + rET_SMALL -- cmmToRawCmm may convert it to rET_BIG + (ContInfo frame srt_info)) ; emitInfoTableAndCode info_lbl info args blks ; return info_lbl } where diff --git a/compiler/codeGen/CgMonad.lhs b/compiler/codeGen/CgMonad.lhs index d40c511327..688591292c 100644 --- a/compiler/codeGen/CgMonad.lhs +++ b/compiler/codeGen/CgMonad.lhs @@ -745,7 +745,7 @@ emitSimpleProc :: CLabel -> Code -> Code emitSimpleProc lbl code = do { stmts <- getCgStmts code ; blks <- cgStmtsToBlocks stmts - ; emitProc (CmmNonInfo Nothing) lbl [] blks } + ; emitProc (CmmInfo Nothing Nothing CmmNonInfoTable) lbl [] blks } getCmm :: Code -> FCode Cmm -- Get all the CmmTops (there should be no stmts) |