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/cmm/CmmInfo.hs | |
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/cmm/CmmInfo.hs')
-rw-r--r-- | compiler/cmm/CmmInfo.hs | 25 |
1 files changed, 13 insertions, 12 deletions
diff --git a/compiler/cmm/CmmInfo.hs b/compiler/cmm/CmmInfo.hs index 3f458b5351..78ff5af0ca 100644 --- a/compiler/cmm/CmmInfo.hs +++ b/compiler/cmm/CmmInfo.hs @@ -71,15 +71,15 @@ cmmToRawCmm cmm = do mkInfoTable :: Unique -> CmmTop -> [RawCmmTop] mkInfoTable uniq (CmmData sec dat) = [CmmData sec dat] -mkInfoTable uniq (CmmProc info entry_label arguments blocks) = +mkInfoTable uniq (CmmProc (CmmInfo _ _ info) entry_label arguments blocks) = case info of -- | Code without an info table. Easy. - CmmNonInfo _ -> [CmmProc [] entry_label arguments blocks] + CmmNonInfoTable -> [CmmProc [] entry_label arguments blocks] -- | A function entry point. - CmmInfo (ProfilingInfo ty_prof cl_prof) _ type_tag - (FunInfo (ptrs, nptrs) srt fun_type fun_arity - pap_bitmap slow_entry) -> + CmmInfoTable (ProfilingInfo ty_prof cl_prof) type_tag + (FunInfo (ptrs, nptrs) srt fun_type fun_arity + pap_bitmap slow_entry) -> mkInfoTableAndCode info_label std_info fun_extra_bits entry_label arguments blocks where @@ -97,8 +97,8 @@ mkInfoTable uniq (CmmProc info entry_label arguments blocks) = layout = packHalfWordsCLit ptrs nptrs -- | A constructor. - CmmInfo (ProfilingInfo ty_prof cl_prof) _ type_tag - (ConstrInfo (ptrs, nptrs) con_tag descr) -> + CmmInfoTable (ProfilingInfo ty_prof cl_prof) type_tag + (ConstrInfo (ptrs, nptrs) con_tag descr) -> mkInfoTableAndCode info_label std_info [con_name] entry_label arguments blocks where @@ -108,8 +108,8 @@ mkInfoTable uniq (CmmProc info entry_label arguments blocks) = layout = packHalfWordsCLit ptrs nptrs -- | A thunk. - CmmInfo (ProfilingInfo ty_prof cl_prof) _ type_tag - (ThunkInfo (ptrs, nptrs) srt) -> + CmmInfoTable (ProfilingInfo ty_prof cl_prof) type_tag + (ThunkInfo (ptrs, nptrs) srt) -> mkInfoTableAndCode info_label std_info srt_label entry_label arguments blocks where @@ -119,8 +119,8 @@ mkInfoTable uniq (CmmProc info entry_label arguments blocks) = layout = packHalfWordsCLit ptrs nptrs -- | A selector thunk. - CmmInfo (ProfilingInfo ty_prof cl_prof) _ type_tag - (ThunkSelectorInfo offset srt) -> + CmmInfoTable (ProfilingInfo ty_prof cl_prof) type_tag + (ThunkSelectorInfo offset srt) -> mkInfoTableAndCode info_label std_info [{- no SRT -}] entry_label arguments blocks where @@ -128,7 +128,8 @@ mkInfoTable uniq (CmmProc info entry_label arguments blocks) = info_label = entryLblToInfoLbl entry_label -- A continuation/return-point. - CmmInfo (ProfilingInfo ty_prof cl_prof) _ type_tag (ContInfo stack_layout srt) -> + CmmInfoTable (ProfilingInfo ty_prof cl_prof) type_tag + (ContInfo stack_layout srt) -> liveness_data ++ mkInfoTableAndCode info_label std_info srt_label entry_label arguments blocks |