From: simonmar Date: Fri, 23 Nov 2001 12:01:34 +0000 (+0000) Subject: [project @ 2001-11-23 12:01:34 by simonmar] X-Git-Tag: Approximately_9120_patches~536 X-Git-Url: http://git.megacz.com/?a=commitdiff_plain;ds=sidebyside;h=c36b02d9d26fe4050397bdfba60a6f92c7314e8d;p=ghc-hetmet.git [project @ 2001-11-23 12:01:34 by simonmar] Adorn various constructor fields with strictness annotations - this fixes at least one space leak, in the mi_usages field of a ModIface. --- diff --git a/ghc/compiler/main/HscTypes.lhs b/ghc/compiler/main/HscTypes.lhs index c29421c..5887e07 100644 --- a/ghc/compiler/main/HscTypes.lhs +++ b/ghc/compiler/main/HscTypes.lhs @@ -139,26 +139,26 @@ linking; it is the "linked" form of the mi_decls field. \begin{code} data ModIface = ModIface { - mi_module :: Module, -- Complete with package info - mi_version :: VersionInfo, -- Module version number - mi_orphan :: WhetherHasOrphans, -- Whether this module has orphans - mi_boot :: IsBootInterface, -- Whether this interface was read from an hi-boot file + mi_module :: !Module, -- Complete with package info + mi_version :: !VersionInfo, -- Module version number + mi_orphan :: WhetherHasOrphans, -- Whether this module has orphans + mi_boot :: !IsBootInterface, -- read from an hi-boot file? - mi_usages :: [ImportVersion Name], -- Usages; kept sorted so that it's easy - -- to decide whether to write a new iface file - -- (changing usages doesn't affect the version of - -- this module) + mi_usages :: ![ImportVersion Name], + -- Usages; kept sorted so that it's easy to decide + -- whether to write a new iface file (changing usages + -- doesn't affect the version of this module) - mi_exports :: [(ModuleName,Avails)], -- What it exports - -- Kept sorted by (mod,occ), - -- to make version comparisons easier + mi_exports :: ![(ModuleName,Avails)], + -- What it exports Kept sorted by (mod,occ), to make + -- version comparisons easier - mi_globals :: GlobalRdrEnv, -- Its top level environment + mi_globals :: !GlobalRdrEnv, -- Its top level environment - mi_fixities :: NameEnv Fixity, -- Fixities - mi_deprecs :: Deprecations, -- Deprecations + mi_fixities :: !(NameEnv Fixity), -- Fixities + mi_deprecs :: !Deprecations, -- Deprecations - mi_decls :: IfaceDecls -- The RnDecls form of ModDetails + mi_decls :: IfaceDecls -- The RnDecls form of ModDetails } data IfaceDecls = IfaceDecls { dcl_tycl :: [RenamedTyClDecl], -- Sorted @@ -180,10 +180,10 @@ mkIfaceDecls tycls rules insts data ModDetails = ModDetails { -- The next three fields are created by the typechecker - md_types :: TypeEnv, - md_insts :: [DFunId], -- Dfun-ids for the instances in this module - md_rules :: [IdCoreRule], -- Domain may include Ids from other modules - md_binds :: [CoreBind] + md_types :: !TypeEnv, + md_insts :: ![DFunId], -- Dfun-ids for the instances in this module + md_rules :: ![IdCoreRule], -- Domain may include Ids from other modules + md_binds :: ![CoreBind] } -- The ModDetails takes on several slightly different forms: @@ -512,18 +512,18 @@ type IsExported = Name -> Bool -- True for names that are exported from this mo \begin{code} data PersistentCompilerState = PCS { - pcs_PIT :: PackageIfaceTable, -- Domain = non-home-package modules + pcs_PIT :: !PackageIfaceTable, -- Domain = non-home-package modules -- the mi_decls component is empty - pcs_PTE :: PackageTypeEnv, -- Domain = non-home-package modules + pcs_PTE :: !PackageTypeEnv, -- Domain = non-home-package modules -- except that the InstEnv components is empty - pcs_insts :: PackageInstEnv, -- The total InstEnv accumulated from all + pcs_insts :: !PackageInstEnv, -- The total InstEnv accumulated from all -- the non-home-package modules - pcs_rules :: PackageRuleBase, -- Ditto RuleEnv + pcs_rules :: !PackageRuleBase, -- Ditto RuleEnv - pcs_PRS :: PersistentRenamerState + pcs_PRS :: !PersistentRenamerState } \end{code} @@ -554,11 +554,11 @@ type PackageRuleBase = RuleBase type PackageInstEnv = InstEnv data PersistentRenamerState - = PRS { prsOrig :: NameSupply, - prsImpMods :: ImportedModuleInfo, - prsDecls :: DeclsMap, - prsInsts :: IfaceInsts, - prsRules :: IfaceRules + = PRS { prsOrig :: !NameSupply, + prsImpMods :: !ImportedModuleInfo, + prsDecls :: !DeclsMap, + prsInsts :: !IfaceInsts, + prsRules :: !IfaceRules } \end{code}