[commit: ghc] wip/dmd-arity: IdInfo comments (5c77e57)
git at git.haskell.org
git at git.haskell.org
Thu Feb 7 17:12:22 UTC 2019
Repository : ssh://git@git.haskell.org/ghc
On branch : wip/dmd-arity
Link : http://ghc.haskell.org/trac/ghc/changeset/5c77e573c08e55060319d960ea1784f87c2b92d2/ghc
>---------------------------------------------------------------
commit 5c77e573c08e55060319d960ea1784f87c2b92d2
Author: Sebastian Graf <sebastian.graf at kit.edu>
Date: Thu Feb 7 15:34:07 2019 +0100
IdInfo comments
>---------------------------------------------------------------
5c77e573c08e55060319d960ea1784f87c2b92d2
compiler/basicTypes/Id.hs | 1 +
compiler/basicTypes/IdInfo.hs | 44 +++++++++++++++++++++++++++----------------
2 files changed, 29 insertions(+), 16 deletions(-)
diff --git a/compiler/basicTypes/Id.hs b/compiler/basicTypes/Id.hs
index 5e91d26..43872d8 100644
--- a/compiler/basicTypes/Id.hs
+++ b/compiler/basicTypes/Id.hs
@@ -655,6 +655,7 @@ isBottomingId v
| isId v = isBottomingSig (idStrictness v)
| otherwise = False
+-- | Accesses the 'Id''s 'strictnessInfo'.
idStrictness :: Id -> StrictSig
idStrictness id = strictnessInfo (idInfo id)
diff --git a/compiler/basicTypes/IdInfo.hs b/compiler/basicTypes/IdInfo.hs
index 12ea490..8a59b98 100644
--- a/compiler/basicTypes/IdInfo.hs
+++ b/compiler/basicTypes/IdInfo.hs
@@ -237,22 +237,34 @@ pprIdDetails other = brackets (pp other)
-- too big.
data IdInfo
= IdInfo {
- arityInfo :: !ArityInfo, -- ^ 'Id' arity
- ruleInfo :: RuleInfo, -- ^ Specialisations of the 'Id's function which exist
- -- See Note [Specialisations and RULES in IdInfo]
- unfoldingInfo :: Unfolding, -- ^ The 'Id's unfolding
- cafInfo :: CafInfo, -- ^ 'Id' CAF info
- oneShotInfo :: OneShotInfo, -- ^ Info about a lambda-bound variable, if the 'Id' is one
- inlinePragInfo :: InlinePragma, -- ^ Any inline pragma atached to the 'Id'
- occInfo :: OccInfo, -- ^ How the 'Id' occurs in the program
-
- strictnessInfo :: StrictSig, -- ^ A strictness signature
-
- demandInfo :: Demand, -- ^ ID demand information
- callArityInfo :: !ArityInfo, -- ^ How this is called.
- -- n <=> all calls have at least n arguments
-
- levityInfo :: LevityInfo -- ^ when applied, will this Id ever have a levity-polymorphic type?
+ arityInfo :: !ArityInfo,
+ -- ^ 'Id' arity, as computed by 'CoreArity'. Specifies how many
+ -- arguments this 'Id' has to be applied to before it doesn any
+ -- meaningful work.
+ ruleInfo :: RuleInfo,
+ -- ^ Specialisations of the 'Id's function which exist.
+ -- See Note [Specialisations and RULES in IdInfo]
+ unfoldingInfo :: Unfolding,
+ -- ^ The 'Id's unfolding
+ cafInfo :: CafInfo,
+ -- ^ 'Id' CAF info
+ oneShotInfo :: OneShotInfo,
+ -- ^ Info about a lambda-bound variable, if the 'Id' is one
+ inlinePragInfo :: InlinePragma,
+ -- ^ Any inline pragma atached to the 'Id'
+ occInfo :: OccInfo,
+ -- ^ How the 'Id' occurs in the program
+ strictnessInfo :: StrictSig,
+ -- ^ A strictness signature. Digests how a function uses its arguments
+ -- if applied to at least 'arityInfo' arguments.
+ demandInfo :: Demand,
+ -- ^ ID demand information
+ callArityInfo :: !ArityInfo,
+ -- ^ How this is called. This is the number of arguments to which a
+ -- binding can be eta-expanded without losing any sharing.
+ -- n <=> all calls have at least n arguments
+ levityInfo :: LevityInfo
+ -- ^ when applied, will this Id ever have a levity-polymorphic type?
}
-- Setters
More information about the ghc-commits
mailing list