summaryrefslogtreecommitdiff
path: root/compiler/profiling
diff options
context:
space:
mode:
Diffstat (limited to 'compiler/profiling')
-rw-r--r--compiler/profiling/CostCentre.lhs10
-rw-r--r--compiler/profiling/SCCfinal.lhs15
2 files changed, 14 insertions, 11 deletions
diff --git a/compiler/profiling/CostCentre.lhs b/compiler/profiling/CostCentre.lhs
index 3ee46a88db..56fde05608 100644
--- a/compiler/profiling/CostCentre.lhs
+++ b/compiler/profiling/CostCentre.lhs
@@ -33,7 +33,7 @@ module CostCentre (
import Var ( Id )
import Name ( getOccName, occNameFS )
-import Module ( Module, moduleFS )
+import Module ( Module )
import Outputable
import FastTypes
import FastString
@@ -339,12 +339,12 @@ instance Outputable CostCentre where
-- Printing in an interface file or in Core generally
pprCostCentreCore (AllCafsCC {cc_mod = m})
- = text "__sccC" <+> braces (ppr_mod m)
+ = text "__sccC" <+> braces (ppr m)
pprCostCentreCore (NormalCC {cc_name = n, cc_mod = m,
cc_is_caf = caf, cc_is_dupd = dup})
= text "__scc" <+> braces (hsep [
ftext (zEncodeFS n),
- ppr_mod m,
+ ppr m,
pp_dup dup,
pp_caf caf
])
@@ -355,13 +355,11 @@ pp_dup other = empty
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_mod m <> ftext (zEncodeFS n) <>
+ = ppr m <> ftext (zEncodeFS n) <>
text (case is_caf of { CafCC -> "_CAF"; _ -> "" }) <> text "_cc"
-- This is the name to go in the user-displayed string,
diff --git a/compiler/profiling/SCCfinal.lhs b/compiler/profiling/SCCfinal.lhs
index c95db9c358..8e02892254 100644
--- a/compiler/profiling/SCCfinal.lhs
+++ b/compiler/profiling/SCCfinal.lhs
@@ -29,12 +29,15 @@ module SCCfinal ( stgMassageForProfiling ) where
import StgSyn
-import Packages ( HomeModules )
+import PackageConfig ( PackageId )
import StaticFlags ( opt_AutoSccsOnIndividualCafs )
import CostCentre -- lots of things
import Id ( Id )
import Module ( Module )
-import UniqSupply ( uniqFromSupply, splitUniqSupply, UniqSupply )
+import UniqSupply ( splitUniqSupply, UniqSupply )
+#ifdef PROF_DO_BOXING
+import UniqSupply ( uniqFromSupply )
+#endif
import Unique ( Unique )
import VarSet
import ListSetOps ( removeDups )
@@ -45,13 +48,13 @@ infixr 9 `thenMM`, `thenMM_`
\begin{code}
stgMassageForProfiling
- :: HomeModules
+ :: PackageId
-> Module -- module name
-> UniqSupply -- unique supply
-> [StgBinding] -- input
-> (CollectedCCs, [StgBinding])
-stgMassageForProfiling pdeps mod_name us stg_binds
+stgMassageForProfiling this_pkg mod_name us stg_binds
= let
((local_ccs, extern_ccs, cc_stacks),
stg_binds2)
@@ -102,7 +105,7 @@ stgMassageForProfiling pdeps mod_name us stg_binds
do_top_rhs :: Id -> StgRhs -> MassageM StgRhs
do_top_rhs binder (StgRhsClosure _ bi fv u srt [] (StgSCC cc (StgConApp con args)))
- | not (isSccCountCostCentre cc) && not (isDllConApp pdeps con args)
+ | not (isSccCountCostCentre cc) && not (isDllConApp this_pkg con args)
-- Trivial _scc_ around nothing but static data
-- Eliminate _scc_ ... and turn into StgRhsCon
@@ -358,8 +361,10 @@ mapAccumMM f b (m:ms)
mapAccumMM f b2 ms `thenMM` \ (b3, rs) ->
returnMM (b3, r:rs)
+#ifdef PROF_DO_BOXING
getUniqueMM :: MassageM Unique
getUniqueMM mod scope_cc us ids ccs = (ccs, uniqFromSupply us)
+#endif
addTopLevelIshId :: Id -> MassageM a -> MassageM a
addTopLevelIshId id scope mod scope_cc us ids ccs