projects
/
ghc-hetmet.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Big tidy-up of deriving code
[ghc-hetmet.git]
/
compiler
/
profiling
/
SCCfinal.lhs
diff --git
a/compiler/profiling/SCCfinal.lhs
b/compiler/profiling/SCCfinal.lhs
index
c95db9c
..
d27a3a0
100644
(file)
--- a/
compiler/profiling/SCCfinal.lhs
+++ b/
compiler/profiling/SCCfinal.lhs
@@
-29,12
+29,15
@@
module SCCfinal ( stgMassageForProfiling ) where
import StgSyn
import StgSyn
-import Packages ( HomeModules )
+import PackageConfig ( PackageId )
import StaticFlags ( opt_AutoSccsOnIndividualCafs )
import CostCentre -- lots of things
import Id ( Id )
import Module ( Module )
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 )
import Unique ( Unique )
import VarSet
import ListSetOps ( removeDups )
@@
-45,13
+48,13
@@
infixr 9 `thenMM`, `thenMM_`
\begin{code}
stgMassageForProfiling
\begin{code}
stgMassageForProfiling
- :: HomeModules
+ :: PackageId
-> Module -- module name
-> UniqSupply -- unique supply
-> [StgBinding] -- input
-> (CollectedCCs, [StgBinding])
-> 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)
= 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)))
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
-- Trivial _scc_ around nothing but static data
-- Eliminate _scc_ ... and turn into StgRhsCon
@@
-192,6
+195,10
@@
stgMassageForProfiling pdeps mod_name us stg_binds
= do_let b e `thenMM` \ (b,e) ->
returnMM (StgLetNoEscape lvs1 lvs2 b e)
= do_let b e `thenMM` \ (b,e) ->
returnMM (StgLetNoEscape lvs1 lvs2 b e)
+ do_expr (StgTick m n expr)
+ = do_expr expr `thenMM` \ expr' ->
+ returnMM (StgTick m n expr')
+
#ifdef DEBUG
do_expr other = pprPanic "SCCfinal.do_expr" (ppr other)
#endif
#ifdef DEBUG
do_expr other = pprPanic "SCCfinal.do_expr" (ppr other)
#endif
@@
-358,8
+365,10
@@
mapAccumMM f b (m:ms)
mapAccumMM f b2 ms `thenMM` \ (b3, rs) ->
returnMM (b3, r:rs)
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)
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
addTopLevelIshId :: Id -> MassageM a -> MassageM a
addTopLevelIshId id scope mod scope_cc us ids ccs