diff options
Diffstat (limited to 'compiler/main')
-rw-r--r-- | compiler/main/HscMain.lhs | 3 | ||||
-rw-r--r-- | compiler/main/HscTypes.lhs | 4 |
2 files changed, 7 insertions, 0 deletions
diff --git a/compiler/main/HscMain.lhs b/compiler/main/HscMain.lhs index 26247b143a..fec3f6cb6b 100644 --- a/compiler/main/HscMain.lhs +++ b/compiler/main/HscMain.lhs @@ -115,6 +115,7 @@ import Exception -- import MonadUtils import Control.Monad +import Control.Concurrent.MVar ( newMVar ) -- import System.IO import Data.IORef \end{code} @@ -133,6 +134,7 @@ newHscEnv callbacks dflags = do { eps_var <- newIORef initExternalPackageState ; us <- mkSplitUniqSupply 'r' ; nc_var <- newIORef (initNameCache us knownKeyNames) + ; nc_lock <- newMVar () ; fc_var <- newIORef emptyUFM ; mlc_var <- newIORef emptyModuleEnv ; optFuel <- initOptFuelState @@ -144,6 +146,7 @@ newHscEnv callbacks dflags hsc_HPT = emptyHomePackageTable, hsc_EPS = eps_var, hsc_NC = nc_var, + hsc_NC_lock = nc_lock, hsc_FC = fc_var, hsc_MLC = mlc_var, hsc_OptFuel = optFuel, diff --git a/compiler/main/HscTypes.lhs b/compiler/main/HscTypes.lhs index 05c17abeb9..962c7a3fd5 100644 --- a/compiler/main/HscTypes.lhs +++ b/compiler/main/HscTypes.lhs @@ -164,6 +164,7 @@ import Data.Array ( Array, array ) import Data.List import Control.Monad ( mplus, guard, liftM, when ) import Exception +import Control.Concurrent.MVar ( MVar ) \end{code} @@ -544,6 +545,9 @@ data HscEnv -- reflect sucking in interface files. They cache the state of -- external interface files, in effect. + hsc_NC_lock :: !(MVar ()), + -- ^ A lock used for updating the name cache. + hsc_FC :: {-# UNPACK #-} !(IORef FinderCache), -- ^ The cached result of performing finding in the file system hsc_MLC :: {-# UNPACK #-} !(IORef ModLocationCache), |