Module header tidyup, phase 1
[ghc-hetmet.git] / compiler / codeGen / CgMonad.lhs
index 4f95c9b..0757bbf 100644 (file)
@@ -1,8 +1,7 @@
 %
+% (c) The University of Glasgow 2006
 % (c) The GRASP/AQUA Project, Glasgow University, 1992-1998
 %
-% $Id: CgMonad.lhs,v 1.45 2005/06/21 10:44:41 simonmar Exp $
-%
 \section[CgMonad]{The code generation monad}
 
 See the beginning of the top-level @CodeGen@ module, to see how this
@@ -42,12 +41,12 @@ module CgMonad (
        getHpUsage,  setHpUsage,
        heapHWM,
 
-       moduleName,
+       getModuleName,
 
        Sequel(..), -- ToDo: unabstract?
 
        -- ideally we wouldn't export these, but some other modules access internal state
-       getState, setState, getInfoDown, getDynFlags, getHomeModules,
+       getState, setState, getInfoDown, getDynFlags, getThisPackage,
 
        -- more localised access to monad state 
        getStkUsage, setStkUsage,
@@ -61,23 +60,23 @@ module CgMonad (
 
 import {-# SOURCE #-} CgBindery ( CgBindings, nukeVolatileBinds )
 
-import DynFlags                ( DynFlags )
-import Packages                ( HomeModules )
+import DynFlags
+import PackageConfig
 import Cmm
-import CmmUtils                ( CmmStmts, isNopStmt )
+import CmmUtils
 import CLabel
-import SMRep           ( WordOff )
-import Module          ( Module )
-import Id              ( Id )
+import SMRep
+import Module
+import Id
 import VarEnv
 import OrdList
-import Unique          ( Unique )
-import Util            ( mapAccumL )
-import UniqSupply      ( UniqSupply, mkSplitUniqSupply, splitUniqSupply, uniqFromSupply )
+import Unique
+import Util
+import UniqSupply
 import FastString
 import Outputable
 
-import Control.Monad   ( liftM )
+import Control.Monad
 
 infixr 9 `thenC`       -- Right-associative!
 infixr 9 `thenFC`
@@ -97,7 +96,6 @@ along.
 data CgInfoDownwards   -- information only passed *downwards* by the monad
   = MkCgInfoDown {
        cgd_dflags  :: DynFlags,
-       cgd_hmods   :: HomeModules,     -- Packages we depend on
        cgd_mod     :: Module,          -- Module being compiled
        cgd_statics :: CgBindings,      -- [Id -> info] : static environment
        cgd_srt     :: CLabel,          -- label of the current SRT
@@ -105,10 +103,9 @@ data CgInfoDownwards       -- information only passed *downwards* by the monad
        cgd_eob     :: EndOfBlockInfo   -- Info for stuff to do at end of basic block:
   }
 
-initCgInfoDown :: DynFlags -> HomeModules -> Module -> CgInfoDownwards
-initCgInfoDown dflags hmods mod
+initCgInfoDown :: DynFlags -> Module -> CgInfoDownwards
+initCgInfoDown dflags mod
   = MkCgInfoDown {     cgd_dflags  = dflags,
-                       cgd_hmods   = hmods,
                        cgd_mod     = mod,
                        cgd_statics = emptyVarEnv,
                        cgd_srt     = error "initC: srt",
@@ -220,7 +217,7 @@ flattenCgStmts id stmts =
   -- Eliminating these has to be done with a dead-code analysis.  For now,
   -- we just make it into a well-formed block by adding a recursive jump.
   flatten [CgLabel id]
-    = ( [], [BasicBlock id [CmmBranch id]] )
+    = ( [CmmBranch id], [BasicBlock id [CmmBranch id]] )
 
   -- A jump/branch: throw away all the code up to the next label, because
   -- it is unreachable.  Be careful to keep forks that we find on the way.
@@ -378,11 +375,11 @@ instance Monad FCode where
 The Abstract~C is not in the environment so as to improve strictness.
 
 \begin{code}
-initC :: DynFlags -> HomeModules -> Module -> FCode a -> IO a
+initC :: DynFlags -> Module -> FCode a -> IO a
 
-initC dflags hmods mod (FCode code)
+initC dflags mod (FCode code)
   = do { uniqs <- mkSplitUniqSupply 'c'
-       ; case code (initCgInfoDown dflags hmods mod) (initCgState uniqs) of
+       ; case code (initCgInfoDown dflags mod) (initCgState uniqs) of
              (res, _) -> return res
        }
 
@@ -510,8 +507,8 @@ getInfoDown = FCode $ \info_down state -> (info_down,state)
 getDynFlags :: FCode DynFlags
 getDynFlags = liftM cgd_dflags getInfoDown
 
-getHomeModules :: FCode HomeModules
-getHomeModules = liftM cgd_hmods getInfoDown
+getThisPackage :: FCode PackageId
+getThisPackage = liftM thisPackage getDynFlags
 
 withInfoDown :: FCode a -> CgInfoDownwards -> FCode a
 withInfoDown (FCode fcode) info_down = FCode $ \_ state -> fcode info_down state 
@@ -806,8 +803,8 @@ consCgStmt stmt stmts = CgStmt stmt `consOL` stmts
 -- ----------------------------------------------------------------------------
 -- Get the current module name
 
-moduleName :: FCode Module
-moduleName = do { info <- getInfoDown; return (cgd_mod info) }
+getModuleName :: FCode Module
+getModuleName = do { info <- getInfoDown; return (cgd_mod info) }
 
 -- ----------------------------------------------------------------------------
 -- Get/set the end-of-block info