X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=ghc%2Fcompiler%2Fcmm%2FCLabel.hs;h=e42b92db5ad7bd7025b76032cac6f604355bd824;hb=28a464a75e14cece5db40f2765a29348273ff2d2;hp=6216d38e0eb976b00e886f7182bb839dca09de3d;hpb=91b07216be1cb09230b7d1b417899ddea8620ff3;p=ghc-hetmet.git diff --git a/ghc/compiler/cmm/CLabel.hs b/ghc/compiler/cmm/CLabel.hs index 6216d38..e42b92d 100644 --- a/ghc/compiler/cmm/CLabel.hs +++ b/ghc/compiler/cmm/CLabel.hs @@ -80,6 +80,8 @@ module CLabel ( mkRtsCodeLabelFS, mkRtsDataLabelFS, + mkRtsApFastLabel, + mkForeignLabel, mkCCLabel, mkCCSLabel, @@ -259,6 +261,8 @@ data RtsLabelInfo | RtsDataFS FastString -- misc rts data bits, eg CHARLIKE_closure | RtsCodeFS FastString -- misc rts code + | RtsApFast LitString -- _fast versions of generic apply + | RtsSlowTickyCtr String deriving (Eq, Ord) @@ -393,6 +397,8 @@ mkRtsRetLabelFS str = RtsLabel (RtsRetFS str) mkRtsCodeLabelFS str = RtsLabel (RtsCodeFS str) mkRtsDataLabelFS str = RtsLabel (RtsDataFS str) +mkRtsApFastLabel str = RtsLabel (RtsApFast str) + mkRtsSlowTickyCtrLabel :: String -> CLabel mkRtsSlowTickyCtrLabel pat = RtsLabel (RtsSlowTickyCtr pat) @@ -520,6 +526,7 @@ labelType (RtsLabel (RtsInfoFS _)) = DataLabel labelType (RtsLabel (RtsEntryFS _)) = CodeLabel labelType (RtsLabel (RtsRetInfoFS _)) = DataLabel labelType (RtsLabel (RtsRetFS _)) = CodeLabel +labelType (RtsLabel (RtsApFast _)) = CodeLabel labelType (CaseLabel _ CaseReturnInfo) = DataLabel labelType (CaseLabel _ _) = CodeLabel labelType (ModuleInitLabel _ _ _) = CodeLabel @@ -614,6 +621,9 @@ tell whether a code fragment is a return point or a closure/function entry. -} +instance Outputable CLabel where + ppr = pprCLabel + pprCLabel :: CLabel -> SDoc #if ! OMIT_NATIVE_CODEGEN @@ -673,6 +683,8 @@ pprCLbl (RtsLabel (RtsData str)) = ptext str pprCLbl (RtsLabel (RtsCodeFS str)) = ftext str pprCLbl (RtsLabel (RtsDataFS str)) = ftext str +pprCLbl (RtsLabel (RtsApFast str)) = ptext str <> ptext SLIT("_fast") + pprCLbl (RtsLabel (RtsSelectorInfoTable upd_reqd offset)) = hcat [ptext SLIT("stg_sel_"), text (show offset), ptext (if upd_reqd