summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoachim Breitner <mail@joachim-breitner.de>2021-10-13 19:43:42 +0200
committerJoachim Breitner <mail@joachim-breitner.de>2021-10-14 00:12:21 +0200
commit9e870c79c014db66f8d5c8400d03bc5e1d98c4b7 (patch)
tree2cd12abfb5c33f92ce2f934b40c409a2a5c953cd
parent19cd403bced51bc27a11f0257c25497154e86889 (diff)
downloadhaskell-wip/joachim/breakinfo-module.tar.gz
Move BreakInfo into own modulewip/joachim/breakinfo-module
while working on GHCi stuff, e.g. `GHC.Runtime.Eval.Types`, I observed a fair amount of modules being recompiled that I didn’t expect to depend on this, from byte code interpreters to linkers. Turns out that the rather simple `BreakInfo` type is all these modules need from the `GHC.Runtime.Eval.*` hierarchy, so by moving that into its own file we make the dependency tree wider and shallower, which is probably worth it.
-rw-r--r--compiler/GHC.hs2
-rw-r--r--compiler/GHC/Runtime/Eval.hs1
-rw-r--r--compiler/GHC/Runtime/Eval/Types.hs10
-rw-r--r--compiler/GHC/Runtime/Interpreter.hs2
-rw-r--r--compiler/GHC/Types/BreakInfo.hs12
-rw-r--r--compiler/ghc.cabal.in1
-rw-r--r--testsuite/tests/count-deps/CountDepsAst.stdout3
-rw-r--r--testsuite/tests/count-deps/CountDepsParser.stdout3
8 files changed, 22 insertions, 12 deletions
diff --git a/compiler/GHC.hs b/compiler/GHC.hs
index 0e4f781a29..0488ccad11 100644
--- a/compiler/GHC.hs
+++ b/compiler/GHC.hs
@@ -321,7 +321,6 @@ import GHC.ByteCode.Types
import qualified GHC.Linker.Loader as Loader
import GHC.Runtime.Loader
import GHC.Runtime.Eval
-import GHC.Runtime.Eval.Types
import GHC.Runtime.Interpreter
import GHC.Runtime.Context
import GHCi.RemoteTypes
@@ -387,6 +386,7 @@ import GHC.Types.TyThing
import GHC.Types.Name.Env
import GHC.Types.Name.Ppr
import GHC.Types.TypeEnv
+import GHC.Types.BreakInfo
import GHC.Unit
import GHC.Unit.Env
diff --git a/compiler/GHC/Runtime/Eval.hs b/compiler/GHC/Runtime/Eval.hs
index bceb9a4159..a4ddbbfd4a 100644
--- a/compiler/GHC/Runtime/Eval.hs
+++ b/compiler/GHC/Runtime/Eval.hs
@@ -106,6 +106,7 @@ import GHC.Types.SrcLoc
import GHC.Types.Unique
import GHC.Types.Unique.Supply
import GHC.Types.TyThing
+import GHC.Types.BreakInfo
import GHC.Unit
import GHC.Unit.Module.Graph
diff --git a/compiler/GHC/Runtime/Eval/Types.hs b/compiler/GHC/Runtime/Eval/Types.hs
index c72c5c89ff..5706c037de 100644
--- a/compiler/GHC/Runtime/Eval/Types.hs
+++ b/compiler/GHC/Runtime/Eval/Types.hs
@@ -8,8 +8,7 @@
module GHC.Runtime.Eval.Types (
Resume(..), History(..), ExecResult(..),
- SingleStep(..), isStep, ExecOptions(..),
- BreakInfo(..)
+ SingleStep(..), isStep, ExecOptions(..)
) where
import GHC.Prelude
@@ -19,7 +18,7 @@ import GHCi.Message (EvalExpr, ResumeContext)
import GHC.Types.Id
import GHC.Types.Name
import GHC.Types.TyThing
-import GHC.Unit.Module
+import GHC.Types.BreakInfo
import GHC.Types.Name.Reader
import GHC.Types.SrcLoc
import GHC.Utils.Exception
@@ -54,11 +53,6 @@ data ExecResult
, breakInfo :: Maybe BreakInfo
}
-data BreakInfo = BreakInfo
- { breakInfo_module :: Module
- , breakInfo_number :: Int
- }
-
data Resume = Resume
{ resumeStmt :: String -- the original statement
, resumeContext :: ForeignRef (ResumeContext [HValueRef])
diff --git a/compiler/GHC/Runtime/Interpreter.hs b/compiler/GHC/Runtime/Interpreter.hs
index 7dcc5fcd82..29c5592299 100644
--- a/compiler/GHC/Runtime/Interpreter.hs
+++ b/compiler/GHC/Runtime/Interpreter.hs
@@ -66,7 +66,7 @@ import GHCi.Message
import GHCi.RemoteTypes
import GHCi.ResolvedBCO
import GHCi.BreakArray (BreakArray)
-import GHC.Runtime.Eval.Types(BreakInfo(..))
+import GHC.Types.BreakInfo (BreakInfo(..))
import GHC.ByteCode.Types
import GHC.Linker.Types
diff --git a/compiler/GHC/Types/BreakInfo.hs b/compiler/GHC/Types/BreakInfo.hs
new file mode 100644
index 0000000000..d08ccda0bf
--- /dev/null
+++ b/compiler/GHC/Types/BreakInfo.hs
@@ -0,0 +1,12 @@
+-- | A module for the BreakInfo type. Used by both the GHC.Runtime.Eval and
+-- GHC.Runtime.Interpreter hierarchy, so put here to have a less deep module
+-- dependency tree
+module GHC.Types.BreakInfo (BreakInfo(..)) where
+
+import GHC.Prelude
+import GHC.Unit.Module
+
+data BreakInfo = BreakInfo
+ { breakInfo_module :: Module
+ , breakInfo_number :: Int
+ }
diff --git a/compiler/ghc.cabal.in b/compiler/ghc.cabal.in
index 25833017d1..668642af80 100644
--- a/compiler/ghc.cabal.in
+++ b/compiler/ghc.cabal.in
@@ -679,6 +679,7 @@ Library
GHC.Types.Annotations
GHC.Types.Avail
GHC.Types.Basic
+ GHC.Types.BreakInfo
GHC.Types.CompleteMatch
GHC.Types.CostCentre
GHC.Types.CostCentre.State
diff --git a/testsuite/tests/count-deps/CountDepsAst.stdout b/testsuite/tests/count-deps/CountDepsAst.stdout
index a73ba61a0f..da2b5b3e5c 100644
--- a/testsuite/tests/count-deps/CountDepsAst.stdout
+++ b/testsuite/tests/count-deps/CountDepsAst.stdout
@@ -1,4 +1,4 @@
-Found 277 Language.Haskell.Syntax module dependencies
+Found 278 Language.Haskell.Syntax module dependencies
GHC.Builtin.Names
GHC.Builtin.PrimOps
GHC.Builtin.Types
@@ -171,6 +171,7 @@ GHC.Tc.Utils.TcType
GHC.Types.Annotations
GHC.Types.Avail
GHC.Types.Basic
+GHC.Types.BreakInfo
GHC.Types.CompleteMatch
GHC.Types.CostCentre
GHC.Types.CostCentre.State
diff --git a/testsuite/tests/count-deps/CountDepsParser.stdout b/testsuite/tests/count-deps/CountDepsParser.stdout
index 617f2c503c..f67d2eb223 100644
--- a/testsuite/tests/count-deps/CountDepsParser.stdout
+++ b/testsuite/tests/count-deps/CountDepsParser.stdout
@@ -1,4 +1,4 @@
-Found 283 GHC.Parser module dependencies
+Found 284 GHC.Parser module dependencies
GHC.Builtin.Names
GHC.Builtin.PrimOps
GHC.Builtin.Types
@@ -177,6 +177,7 @@ GHC.Tc.Utils.TcType
GHC.Types.Annotations
GHC.Types.Avail
GHC.Types.Basic
+GHC.Types.BreakInfo
GHC.Types.CompleteMatch
GHC.Types.CostCentre
GHC.Types.CostCentre.State