summaryrefslogtreecommitdiff
path: root/compiler/main
diff options
context:
space:
mode:
Diffstat (limited to 'compiler/main')
-rw-r--r--compiler/main/HscMain.lhs3
-rw-r--r--compiler/main/HscTypes.lhs4
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),