summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ghc/compiler/absCSyn/CLabel.lhs20
-rw-r--r--ghc/compiler/codeGen/CodeGen.lhs18
-rw-r--r--ghc/compiler/compMan/CompManager.lhs2
-rw-r--r--ghc/compiler/main/HscMain.lhs14
-rw-r--r--ghc/compiler/main/HscTypes.lhs11
5 files changed, 30 insertions, 35 deletions
diff --git a/ghc/compiler/absCSyn/CLabel.lhs b/ghc/compiler/absCSyn/CLabel.lhs
index 92ead17189..442dc01688 100644
--- a/ghc/compiler/absCSyn/CLabel.lhs
+++ b/ghc/compiler/absCSyn/CLabel.lhs
@@ -1,7 +1,7 @@
%
% (c) The GRASP/AQUA Project, Glasgow University, 1992-1998
%
-% $Id: CLabel.lhs,v 1.53 2002/07/16 14:56:09 simonmar Exp $
+% $Id: CLabel.lhs,v 1.54 2002/07/18 09:16:12 simonmar Exp $
%
\section[CLabel]{@CLabel@: Information to make C Labels}
@@ -127,8 +127,12 @@ data CLabel
| ModuleInitLabel
Module -- the module name
- Version -- its version (same as the interface file ver)
String -- its "way"
+ -- at some point we might want some kind of version number in
+ -- the module init label, to guard against compiling modules in
+ -- the wrong order. We can't use the interface file version however,
+ -- because we don't always recompile modules which depend on a module
+ -- whose version has changed.
| PlainModuleInitLabel Module -- without the vesrion & way info
@@ -313,7 +317,7 @@ needsCDecl (IdLabel _ _) = True
needsCDecl (CaseLabel _ CaseReturnPt) = True
needsCDecl (DataConLabel _ _) = True
needsCDecl (TyConLabel _) = True
-needsCDecl (ModuleInitLabel _ _ _) = True
+needsCDecl (ModuleInitLabel _ _) = True
needsCDecl (PlainModuleInitLabel _) = True
needsCDecl (CaseLabel _ _) = False
@@ -341,7 +345,7 @@ externallyVisibleCLabel (DataConLabel _ _) = True
externallyVisibleCLabel (TyConLabel tc) = True
externallyVisibleCLabel (CaseLabel _ _) = False
externallyVisibleCLabel (AsmTempLabel _) = False
-externallyVisibleCLabel (ModuleInitLabel _ _ _)= True
+externallyVisibleCLabel (ModuleInitLabel _ _)= True
externallyVisibleCLabel (PlainModuleInitLabel _)= True
externallyVisibleCLabel (RtsLabel RtsModuleRegd) = False --hack
externallyVisibleCLabel (RtsLabel _) = True
@@ -364,7 +368,7 @@ labelType (CaseLabel _ CaseReturnInfo) = InfoTblType
labelType (CaseLabel _ CaseReturnPt) = CodeType
labelType (CaseLabel _ CaseVecTbl) = VecTblType
labelType (TyConLabel _) = ClosureTblType
-labelType (ModuleInitLabel _ _ _) = CodeType
+labelType (ModuleInitLabel _ _) = CodeType
labelType (PlainModuleInitLabel _) = CodeType
labelType (IdLabel _ info) =
@@ -399,7 +403,7 @@ labelDynamic lbl =
DataConLabel n k -> isDllName n
TyConLabel tc -> isDllName (getName tc)
ForeignLabel _ d -> d
- ModuleInitLabel m _ _ -> (not opt_Static) && (not (isHomeModule m))
+ ModuleInitLabel m _ -> (not opt_Static) && (not (isHomeModule m))
PlainModuleInitLabel m -> (not opt_Static) && (not (isHomeModule m))
_ -> False
\end{code}
@@ -533,9 +537,9 @@ pprCLbl (DataConLabel con flavor) = ppr con <> ppConFlavor flavor
pprCLbl (CC_Label cc) = ppr cc
pprCLbl (CCS_Label ccs) = ppr ccs
-pprCLbl (ModuleInitLabel mod ver way)
+pprCLbl (ModuleInitLabel mod way)
= ptext SLIT("__stginit_") <> ftext (moduleNameFS (moduleName mod))
- <> char '_' <> int ver <> char '_' <> text way
+ <> char '_' <> text way
pprCLbl (PlainModuleInitLabel mod)
= ptext SLIT("__stginit_") <> ftext (moduleNameFS (moduleName mod))
diff --git a/ghc/compiler/codeGen/CodeGen.lhs b/ghc/compiler/codeGen/CodeGen.lhs
index e7c53c1bff..a8ce811cf0 100644
--- a/ghc/compiler/codeGen/CodeGen.lhs
+++ b/ghc/compiler/codeGen/CodeGen.lhs
@@ -63,15 +63,14 @@ import IOExts ( readIORef )
\begin{code}
codeGen :: DynFlags
-> Module -- Module name
- -> Version -- Module version
- -> [(Module,Version)] -- Import names & versions
+ -> [Module] -- Import names
-> CollectedCCs -- (Local/global) cost-centres needing declaring/registering.
-> [Id] -- foreign-exported binders
-> [TyCon] -- Local tycons, including ones from classes
-> [(StgBinding,[Id])] -- Bindings to convert, with SRTs
-> IO AbstractC -- Output
-codeGen dflags mod_name mod_ver imported_modules cost_centre_info fe_binders
+codeGen dflags mod_name imported_modules cost_centre_info fe_binders
tycons stg_binds
= do
showPass dflags "CodeGen"
@@ -84,7 +83,7 @@ codeGen dflags mod_name mod_ver imported_modules cost_centre_info fe_binders
datatype_stuff = genStaticConBits cinfo data_tycons
code_stuff = initC cinfo (mapCs cgTopBinding stg_binds)
- init_stuff = mkModuleInit fe_binders mod_name mod_ver way
+ init_stuff = mkModuleInit fe_binders mod_name way
imported_modules cost_centre_info
abstractC = mkAbstractCs [ maybeSplitCode,
@@ -111,12 +110,11 @@ codeGen dflags mod_name mod_ver imported_modules cost_centre_info fe_binders
mkModuleInit
:: [Id] -- foreign exported functions
-> Module -- module name
- -> Version -- module version
-> String -- the "way"
- -> [(Module,Version)] -- import names & versions
+ -> [Module] -- import names
-> CollectedCCs -- cost centre info
-> AbstractC
-mkModuleInit fe_binders mod ver way imps cost_centre_info
+mkModuleInit fe_binders mod way imps cost_centre_info
= let
register_fes =
map (\f -> CMacroStmt REGISTER_FOREIGN_EXPORT [f]) fe_labels
@@ -127,10 +125,10 @@ mkModuleInit fe_binders mod ver way imps cost_centre_info
(cc_decls, cc_regs) = mkCostCentreStuff cost_centre_info
-- we don't want/need to init GHC.Prim, so filter it out
- mk_import_register (imp,ver)
+ mk_import_register imp
| imp == gHC_PRIM = AbsCNop
| otherwise = CMacroStmt REGISTER_IMPORT [
- CLbl (mkModuleInitLabel imp ver way) AddrRep
+ CLbl (mkModuleInitLabel imp way) AddrRep
]
register_imports = map mk_import_register imps
@@ -138,7 +136,7 @@ mkModuleInit fe_binders mod ver way imps cost_centre_info
mkAbstractCs [
cc_decls,
CModuleInitBlock (mkPlainModuleInitLabel mod)
- (mkModuleInitLabel mod ver way)
+ (mkModuleInitLabel mod way)
(mkAbstractCs (register_fes ++
cc_regs :
register_imports))
diff --git a/ghc/compiler/compMan/CompManager.lhs b/ghc/compiler/compMan/CompManager.lhs
index dc5a2db6af..449801c007 100644
--- a/ghc/compiler/compMan/CompManager.lhs
+++ b/ghc/compiler/compMan/CompManager.lhs
@@ -73,7 +73,7 @@ import HscMain ( initPersistentCompilerState, hscThing,
#else
import HscMain ( initPersistentCompilerState )
#endif
-import HscTypes
+import HscTypes hiding ( moduleNameToModule )
import Name ( Name, NamedThing(..), nameRdrName, nameModule,
isHomePackageName, isExternalName )
import NameEnv
diff --git a/ghc/compiler/main/HscMain.lhs b/ghc/compiler/main/HscMain.lhs
index 3ae48663b9..747a14a8e0 100644
--- a/ghc/compiler/main/HscMain.lhs
+++ b/ghc/compiler/main/HscMain.lhs
@@ -46,6 +46,7 @@ import StringBuffer ( hGetStringBuffer, freeStringBuffer )
import Parser
import Lex ( ParseResult(..), ExtFlags(..), mkPState )
import SrcLoc ( mkSrcLoc )
+import Finder ( findModule )
import Rename ( checkOldIface, renameModule, renameExtCore,
closeIfaceDecls, RnResult(..) )
import Rules ( emptyRuleBase )
@@ -83,7 +84,6 @@ import OccName ( OccName )
import Name ( Name, nameModule, nameOccName, getName )
import NameEnv ( emptyNameEnv, mkNameEnv )
import Module ( Module )
-import BasicTypes ( Version )
import FastString
import Maybes ( expectJust )
import Util ( seqList )
@@ -98,6 +98,7 @@ import IO
import MkExternalCore ( emitExternalCore )
import ParserCore
import ParserCoreUtils
+
\end{code}
@@ -226,14 +227,12 @@ hscRecomp ghci_mode dflags have_object
pcs_tc, ds_details, foreign_stuff) -> do {
let {
- imported_module_names :: [ModuleName];
imported_module_names =
filter (/= gHC_PRIM_Name) $
map ideclName (hsModuleImports rdr_module);
- imported_modules :: [(Module,Version)];
imported_modules =
- map (getModuleAndVersion hit (pcs_PIT pcs_tc))
+ map (moduleNameToModule hit (pcs_PIT pcs_tc))
imported_module_names;
}
@@ -387,18 +386,13 @@ hscRecomp ghci_mode dflags have_object
final_iface <- _scc_ "MkFinalIface"
mkFinalIface ghci_mode dflags location
maybe_checked_iface new_iface tidy_details
-
- -- get this module's version
- version <- return $! vers_module (mi_version final_iface)
-
if toNothing
then do
return (False, False, Nothing, final_iface)
else do
------------------ Code generation ------------------
abstractC <- _scc_ "CodeGen"
- codeGen dflags this_mod version
- imported_modules
+ codeGen dflags this_mod imported_modules
cost_centre_info fe_binders
local_tycons stg_binds
diff --git a/ghc/compiler/main/HscTypes.lhs b/ghc/compiler/main/HscTypes.lhs
index 4dcfaa9a40..045c17fdb9 100644
--- a/ghc/compiler/main/HscTypes.lhs
+++ b/ghc/compiler/main/HscTypes.lhs
@@ -13,7 +13,7 @@ module HscTypes (
HomeSymbolTable, emptySymbolTable,
PackageTypeEnv,
HomeIfaceTable, PackageIfaceTable, emptyIfaceTable,
- lookupIface, lookupIfaceByModName, getModuleAndVersion,
+ lookupIface, lookupIfaceByModName, moduleNameToModule,
emptyModIface,
InteractiveContext(..),
@@ -302,11 +302,10 @@ lookupIfaceByModName hit pit mod
-- Use instead of Finder.findModule if possible: this way doesn't
-- require filesystem operations, and it is guaranteed not to fail
-- when the IfaceTables are properly populated (i.e. after the renamer).
-getModuleAndVersion :: HomeIfaceTable -> PackageIfaceTable -> ModuleName
- -> (Module,Version)
-getModuleAndVersion hit pit mod
- = ((,) $! mi_module iface) $! vers_module (mi_version iface)
- where iface = fromJust (lookupIfaceByModName hit pit mod)
+moduleNameToModule :: HomeIfaceTable -> PackageIfaceTable -> ModuleName
+ -> Module
+moduleNameToModule hit pit mod
+ = mi_module (fromJust (lookupIfaceByModName hit pit mod))
\end{code}