#include "HsVersions.h"
import Var ( Id )
-import Name ( UserFS, EncodedFS, encodeFS, decode,
- getOccName, occNameFS
- )
-import Module ( Module )
+import Name ( getOccName, occNameFS )
+import Module ( Module, moduleFS )
import Outputable
import FastTypes
import FastString
cc_mod :: Module -- Name of module defining this CC.
}
-type CcName = EncodedFS
+type CcName = FastString
data IsDupdCC
= OriginalCC -- This says how the CC is *used*. Saying that
Building cost centres
\begin{code}
-mkUserCC :: UserFS -> Module -> CostCentre
+mkUserCC :: FastString -> Module -> CostCentre
mkUserCC cc_name mod
- = NormalCC { cc_name = encodeFS cc_name, cc_mod = mod,
+ = NormalCC { cc_name = cc_name, cc_mod = mod,
cc_is_dupd = OriginalCC, cc_is_caf = NotCafCC {-might be changed-}
}
-- Printing in an interface file or in Core generally
pprCostCentreCore (AllCafsCC {cc_mod = m})
- = text "__sccC" <+> braces (ppr m)
+ = text "__sccC" <+> braces (ppr_mod m)
pprCostCentreCore (NormalCC {cc_name = n, cc_mod = m,
cc_is_caf = caf, cc_is_dupd = dup})
= text "__scc" <+> braces (hsep [
- ftext n,
- ppr m,
+ ftext (zEncodeFS n),
+ ppr_mod m,
pp_dup dup,
pp_caf caf
])
pp_caf CafCC = text "__C"
pp_caf other = empty
+ppr_mod m = ftext (zEncodeFS (moduleFS m))
-- Printing as a C label
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 <> ftext n <>
+ = ppr_mod m <> ftext (zEncodeFS 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 (unpackFS name)
+ = case is_caf of { CafCC -> "CAF:"; _ -> "" } ++ unpackFS name
\end{code}