From c01dc71dffd1977bf556167d7174e39eed69d61f Mon Sep 17 00:00:00 2001 From: panne Date: Tue, 22 Feb 2000 12:45:30 +0000 Subject: [PATCH] [project @ 2000-02-22 12:45:30 by panne] Space leak paranoia: Don't keep whole InterfaceDetails alive throughout the middle part of the compiler --- ghc/compiler/main/Main.lhs | 8 +++++--- ghc/compiler/main/MkIface.lhs | 4 ++-- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/ghc/compiler/main/Main.lhs b/ghc/compiler/main/Main.lhs index 6902a18..c0b2066 100644 --- a/ghc/compiler/main/Main.lhs +++ b/ghc/compiler/main/Main.lhs @@ -20,6 +20,7 @@ import Lex ( PState(..), P, ParseResult(..) ) import SrcLoc ( mkSrcLoc ) import Rename ( renameModule ) +import RnMonad ( InterfaceDetails(..) ) import MkIface ( startIface, ifaceDecls, endIface ) import TcModule ( TcResults(..), typecheckModule ) @@ -123,7 +124,8 @@ doIt (core_cmds, stg_cmds) reportCompile mod_name "Compilation NOT required!" >> return (); - Just (this_mod, rn_mod, iface_file_stuff, rn_name_supply, imported_modules) -> + Just (this_mod, rn_mod, iface_file_stuff@(InterfaceDetails _ _ _ deprecations), + rn_name_supply, imported_modules) -> -- Oh well, we've got to recompile for real @@ -187,8 +189,8 @@ doIt (core_cmds, stg_cmds) -- thoroughout code generation ifaceDecls if_handle local_tycons local_classes inst_info - final_ids tidy_binds imp_rule_ids iface_file_stuff >> - endIface if_handle >> + final_ids tidy_binds imp_rule_ids deprecations >> + endIface if_handle >> -- We are definitely done w/ interface-file stuff at this point: -- (See comments near call to "startIface".) diff --git a/ghc/compiler/main/MkIface.lhs b/ghc/compiler/main/MkIface.lhs index 50a83d8..6edc9d5 100644 --- a/ghc/compiler/main/MkIface.lhs +++ b/ghc/compiler/main/MkIface.lhs @@ -90,7 +90,7 @@ ifaceDecls :: Maybe Handle -> [Id] -- Ids used at code-gen time; they have better pragma info! -> [CoreBind] -- In dependency order, later depend on earlier -> [ProtoCoreRule] -- Rules - -> InterfaceDetails + -> [Deprecation Name] -> IO () endIface :: Maybe Handle -> IO () @@ -127,7 +127,7 @@ ifaceDecls (Just hdl) final_ids binds orphan_rules -- Rules defined locally for an Id that is *not* defined locally - (InterfaceDetails _ _ _ deprecations) + deprecations | null_decls = return () -- You could have a module with just (re-)exports/instances in it | otherwise -- 1.7.10.4