CostCentreStack,
CollectedCCs,
noCCS, subsumedCCS, currentCCS, overheadCCS, dontCareCCS,
- noCostCentre, noCCAttached,
+ noCostCentre,
noCCSAttached, isCurrentCCS, isSubsumedCCS, currentOrSubsumedCCS,
isDerivedFromCurrentCCS,
mkUserCC, mkAutoCC, mkAllCafsCC,
- mkSingletonCCS, cafifyCC, dupifyCC, pushCCOnCCS,
- isCafCC, isDupdCC, isEmptyCC, isCafCCS,
+ mkSingletonCCS, dupifyCC, pushCCOnCCS,
+ isCafCCS,
isSccCountCostCentre,
sccAbleCostCentre,
ccFromThisModule,
import Outputable
import CStrings ( pprStringInCStyle )
import FastTypes
+import FastString
import Util ( thenCmp )
\end{code}
pushCCOnCCS :: CostCentre -> CostCentreStack -> CostCentreStack
pushCCOnCCS = PushCC
-cafifyCC, dupifyCC :: CostCentre -> CostCentre
-cafifyCC cc@(NormalCC {cc_is_caf = is_caf})
- = ASSERT(not_a_caf_already is_caf)
- cc {cc_is_caf = CafCC}
- where
- not_a_caf_already CafCC = False
- not_a_caf_already _ = True
-cafifyCC cc = pprPanic "cafifyCC" (ppr cc)
-
dupifyCC cc = cc {cc_is_dupd = DupdCC}
isEmptyCC, isCafCC, isDupdCC :: CostCentre -> Bool
pprCostCentreCore (NormalCC {cc_name = n, cc_mod = m,
cc_is_caf = caf, cc_is_dupd = dup})
= text "__scc" <+> braces (hsep [
- ptext n,
+ ftext n,
ppr m,
pp_dup dup,
pp_caf caf
ppCostCentreLbl (NoCostCentre) = text "NONE_cc"
ppCostCentreLbl (AllCafsCC {cc_mod = m}) = ppr m <> text "_CAFs_cc"
ppCostCentreLbl (NormalCC {cc_name = n, cc_mod = m, cc_is_caf = is_caf})
- = ppr m <> ptext n <>
+ = ppr m <> ftext n <>
text (case is_caf of { CafCC -> "_CAF"; _ -> "" }) <> text "_cc"
-- This is the name to go in the user-displayed string,
costCentreUserName (NoCostCentre) = "NO_CC"
costCentreUserName (AllCafsCC {}) = "CAF"
costCentreUserName cc@(NormalCC {cc_name = name, cc_is_caf = is_caf})
- = case is_caf of { CafCC -> "CAF:"; _ -> "" } ++ decode (_UNPK_ name)
+ = case is_caf of { CafCC -> "CAF:"; _ -> "" } ++ decode (unpackFS name)
\end{code}
Cost Centre Declarations
cc_ident, comma,
pprStringInCStyle (costCentreUserName cc), comma,
pprStringInCStyle (moduleNameUserString mod_name), comma,
- ptext is_subsumed, comma,
+ is_subsumed, comma,
empty, -- Now always externally visible
text ");"]
else
mod_name = cc_mod cc
is_subsumed = ccSubsumed cc
-ccSubsumed :: CostCentre -> FAST_STRING -- subsumed value
-ccSubsumed cc | isCafCC cc = SLIT("CC_IS_CAF")
- | otherwise = SLIT("CC_IS_BORING")
+ccSubsumed :: CostCentre -> SDoc -- subsumed value
+ccSubsumed cc | isCafCC cc = ptext SLIT("CC_IS_CAF")
+ | otherwise = ptext SLIT("CC_IS_BORING")
\end{code}