diff options
| -rw-r--r-- | compiler/codeGen/CgProf.hs | 8 | ||||
| -rw-r--r-- | compiler/codeGen/StgCmmProf.hs | 8 | ||||
| -rw-r--r-- | compiler/profiling/CostCentre.lhs | 16 |
3 files changed, 20 insertions, 12 deletions
diff --git a/compiler/codeGen/CgProf.hs b/compiler/codeGen/CgProf.hs index 23a602c174..c961e24147 100644 --- a/compiler/codeGen/CgProf.hs +++ b/compiler/codeGen/CgProf.hs @@ -162,9 +162,11 @@ emitCostCentreDecl :: CostCentre -> Code emitCostCentreDecl cc = do - { label <- newStringCLit (costCentreUserName cc) - ; modl <- newStringCLit (Module.moduleNameString - (Module.moduleName (cc_mod cc))) + -- NB. bytesFS: we want the UTF-8 bytes here (#5559) + { label <- newByteStringCLit (bytesFS $ costCentreUserNameFS cc) + ; modl <- newByteStringCLit (bytesFS $ Module.moduleNameFS + $ Module.moduleName + $ cc_mod cc) -- All cost centres will be in the main package, since we -- don't normally use -auto-all or add SCCs to other packages. -- Hence don't emit the package name in the module here. diff --git a/compiler/codeGen/StgCmmProf.hs b/compiler/codeGen/StgCmmProf.hs index 338e10428b..13c1be7f42 100644 --- a/compiler/codeGen/StgCmmProf.hs +++ b/compiler/codeGen/StgCmmProf.hs @@ -213,9 +213,11 @@ initCostCentres (local_CCs, ___extern_CCs, singleton_CCSs) emitCostCentreDecl :: CostCentre -> FCode () emitCostCentreDecl cc = do - { label <- newStringCLit (costCentreUserName cc) - ; modl <- newStringCLit (Module.moduleNameString - (Module.moduleName (cc_mod cc))) + -- NB. bytesFS: we want the UTF-8 bytes here (#5559) + { label <- newByteStringCLit (bytesFS $ costCentreUserNameFS cc) + ; modl <- newByteStringCLit (bytesFS $ Module.moduleNameFS + $ Module.moduleName + $ cc_mod cc) -- All cost centres will be in the main package, since we -- don't normally use -auto-all or add SCCs to other packages. -- Hence don't emit the package name in the module here. diff --git a/compiler/profiling/CostCentre.lhs b/compiler/profiling/CostCentre.lhs index 9545b2eb89..2a44121dfd 100644 --- a/compiler/profiling/CostCentre.lhs +++ b/compiler/profiling/CostCentre.lhs @@ -24,7 +24,7 @@ module CostCentre ( isCafCCS, isCafCC, isSccCountCC, sccAbleCC, ccFromThisModule, pprCostCentreCore, - costCentreUserName, + costCentreUserName, costCentreUserNameFS, cmpCostCentre -- used for removing dups in a list ) where @@ -280,9 +280,13 @@ ppCostCentreLbl (NormalCC {cc_name = n, cc_mod = m, cc_is_caf = is_caf}) -- This is the name to go in the user-displayed string, -- recorded in the cost centre declaration costCentreUserName :: CostCentre -> String -costCentreUserName (NoCostCentre) = "NO_CC" -costCentreUserName (AllCafsCC {}) = "CAF" -costCentreUserName (NormalCC {cc_name = name, cc_is_caf = is_caf}) - = case is_caf of { CafCC -> "CAF:"; _ -> "" } ++ unpackFS name - +costCentreUserName = unpackFS . costCentreUserNameFS + +costCentreUserNameFS :: CostCentre -> FastString +costCentreUserNameFS (NoCostCentre) = mkFastString "NO_CC" +costCentreUserNameFS (AllCafsCC {}) = mkFastString "CAF" +costCentreUserNameFS (NormalCC {cc_name = name, cc_is_caf = is_caf}) + = case is_caf of + CafCC -> mkFastString "CAF:" `appendFS` name + _ -> name \end{code} |
