projects
/
ghc-hetmet.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Use DynFlags to work out if we are doing ticky ticky profiling
[ghc-hetmet.git]
/
compiler
/
main
/
DynFlags.hs
diff --git
a/compiler/main/DynFlags.hs
b/compiler/main/DynFlags.hs
index
1e405ea
..
3f975cd
100644
(file)
--- a/
compiler/main/DynFlags.hs
+++ b/
compiler/main/DynFlags.hs
@@
-35,6
+35,7
@@
module DynFlags (
updOptLevel,
setTmpDir,
setPackageName,
updOptLevel,
setTmpDir,
setPackageName,
+ doingTickyProfiling,
-- ** Parsing DynFlags
parseDynamicFlags,
-- ** Parsing DynFlags
parseDynamicFlags,
@@
-84,10
+85,11
@@
import Util
import Maybes ( orElse )
import SrcLoc
import FastString
import Maybes ( orElse )
import SrcLoc
import FastString
+import FiniteMap
import Outputable
import {-# SOURCE #-} ErrUtils ( Severity(..), Message, mkLocMessage )
import Outputable
import {-# SOURCE #-} ErrUtils ( Severity(..), Message, mkLocMessage )
-import Data.IORef ( readIORef )
+import Data.IORef
import Control.Monad ( when )
import Data.Char
import Control.Monad ( when )
import Data.Char
@@
-433,6
+435,12
@@
data DynFlags = DynFlags {
pkgDatabase :: Maybe (UniqFM PackageConfig),
pkgState :: PackageState,
pkgDatabase :: Maybe (UniqFM PackageConfig),
pkgState :: PackageState,
+ -- Temporary files
+ -- These have to be IORefs, because the defaultCleanupHandler needs to
+ -- know what to clean when an exception happens
+ filesToClean :: IORef [FilePath],
+ dirsToClean :: IORef (FiniteMap FilePath FilePath),
+
-- hsc dynamic flags
flags :: [DynFlag],
-- hsc dynamic flags
flags :: [DynFlag],
@@
-510,6
+518,11
@@
isNoLink :: GhcLink -> Bool
isNoLink NoLink = True
isNoLink _ = False
isNoLink NoLink = True
isNoLink _ = False
+-- Is it worth evaluating this Bool and caching it in the DynFlags value
+-- during initDynFlags?
+doingTickyProfiling :: DynFlags -> Bool
+doingTickyProfiling dflags = WayTicky `elem` wayNames dflags
+
data PackageFlag
= ExposePackage String
| HidePackage String
data PackageFlag
= ExposePackage String
| HidePackage String
@@
-539,10
+552,14
@@
initDynFlags dflags = do
ways <- readIORef v_Ways
build_tag <- readIORef v_Build_tag
rts_build_tag <- readIORef v_RTS_Build_tag
ways <- readIORef v_Ways
build_tag <- readIORef v_Build_tag
rts_build_tag <- readIORef v_RTS_Build_tag
+ refFilesToClean <- newIORef []
+ refDirsToClean <- newIORef emptyFM
return dflags{
wayNames = ways,
buildTag = build_tag,
return dflags{
wayNames = ways,
buildTag = build_tag,
- rtsBuildTag = rts_build_tag
+ rtsBuildTag = rts_build_tag,
+ filesToClean = refFilesToClean,
+ dirsToClean = refDirsToClean
}
-- | The normal 'DynFlags'. Note that they is not suitable for use in this form
}
-- | The normal 'DynFlags'. Note that they is not suitable for use in this form
@@
-641,6
+658,8
@@
defaultDynFlags =
depExcludeMods = [],
depSuffixes = [],
-- end of ghc -M values
depExcludeMods = [],
depSuffixes = [],
-- end of ghc -M values
+ filesToClean = panic "defaultDynFlags: No filesToClean",
+ dirsToClean = panic "defaultDynFlags: No dirsToClean",
haddockOptions = Nothing,
flags = [
Opt_AutoLinkPackages,
haddockOptions = Nothing,
flags = [
Opt_AutoLinkPackages,