diff options
Diffstat (limited to 'compiler/profiling')
-rw-r--r-- | compiler/profiling/CostCentre.lhs | 10 | ||||
-rw-r--r-- | compiler/profiling/SCCfinal.lhs | 15 |
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 |