summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--compiler/simplStg/StgLiftLams/Analysis.hs7
1 files changed, 3 insertions, 4 deletions
diff --git a/compiler/simplStg/StgLiftLams/Analysis.hs b/compiler/simplStg/StgLiftLams/Analysis.hs
index 7fb60df0b0..3cdbfcbb3f 100644
--- a/compiler/simplStg/StgLiftLams/Analysis.hs
+++ b/compiler/simplStg/StgLiftLams/Analysis.hs
@@ -484,13 +484,12 @@ rhsLambdaBndrs (StgRhsClosure _ _ _ bndrs _) = map binderInfoBndr bndrs
-- | The size in words of a function closure closing over the given 'Id's,
-- including the header.
closureSize :: DynFlags -> [Id] -> WordOff
-closureSize dflags ids = words
+closureSize dflags ids = words + sTD_HDR_SIZE dflags
+ -- We go through sTD_HDR_SIZE rather than fixedHdrSizeW so that we don't
+ -- optimise differently when profiling is enabled.
where
(words, _, _)
-- Functions have a StdHeader (as opposed to ThunkHeader).
- -- Note that mkVirtHeadOffsets will account for profiling headers, so
- -- lifting decisions vary if we begin to profile stuff. Maybe we shouldn't
- -- do this or deactivate profiling in @dflags@?
= StgCmmLayout.mkVirtHeapOffsets dflags StgCmmLayout.StdHeader
. StgCmmClosure.addIdReps
. StgCmmClosure.nonVoidIds