Safe Haskell | None |
---|---|
Language | GHC2021 |
Synopsis
- newtype Loader = Loader {
- loader_state :: MVar (Maybe LoaderState)
- data LoaderState = LoaderState {
- linker_env :: !LinkerEnv
- bcos_loaded :: !LinkableSet
- objs_loaded :: !LinkableSet
- pkgs_loaded :: !PkgsLoaded
- temp_sos :: ![(FilePath, String)]
- uninitializedLoader :: IO Loader
- modifyClosureEnv :: LoaderState -> (ClosureEnv -> ClosureEnv) -> LoaderState
- data LinkerEnv = LinkerEnv {
- closure_env :: !ClosureEnv
- itbl_env :: !ItblEnv
- addr_env :: !AddrEnv
- filterLinkerEnv :: (Name -> Bool) -> LinkerEnv -> LinkerEnv
- type ClosureEnv = NameEnv (Name, ForeignHValue)
- emptyClosureEnv :: ClosureEnv
- extendClosureEnv :: ClosureEnv -> [(Name, ForeignHValue)] -> ClosureEnv
- data Linkable = LM {
- linkableTime :: !UTCTime
- linkableModule :: !Module
- linkableUnlinked :: [Unlinked]
- type LinkableSet = ModuleEnv Linkable
- mkLinkableSet :: [Linkable] -> LinkableSet
- unionLinkableSet :: LinkableSet -> LinkableSet -> LinkableSet
- type ObjFile = FilePath
- data Unlinked
- data SptEntry = SptEntry Id Fingerprint
- isObjectLinkable :: Linkable -> Bool
- linkableObjs :: Linkable -> [FilePath]
- isObject :: Unlinked -> Bool
- nameOfObject :: Unlinked -> FilePath
- nameOfObject_maybe :: Unlinked -> Maybe FilePath
- isInterpretable :: Unlinked -> Bool
- byteCodeOfObject :: Unlinked -> [CompiledByteCode]
- data LibrarySpec
- data LoadedPkgInfo = LoadedPkgInfo {}
- type PkgsLoaded = UniqDFM UnitId LoadedPkgInfo
Documentation
data LoaderState Source #
LoaderState | |
|
modifyClosureEnv :: LoaderState -> (ClosureEnv -> ClosureEnv) -> LoaderState Source #
LinkerEnv | |
|
type ClosureEnv = NameEnv (Name, ForeignHValue) Source #
extendClosureEnv :: ClosureEnv -> [(Name, ForeignHValue)] -> ClosureEnv Source #
Information we can use to dynamically link modules into the compiler
LM | |
|
Instances
type LinkableSet = ModuleEnv Linkable Source #
mkLinkableSet :: [Linkable] -> LinkableSet Source #
unionLinkableSet :: LinkableSet -> LinkableSet -> LinkableSet Source #
Objects which have yet to be linked by the compiler
DotO ObjFile | An object file (.o) |
DotA FilePath | Static archive file (.a) |
DotDLL FilePath | Dynamically linked library file (.so, .dll, .dylib) |
CoreBindings WholeCoreBindings | Serialised core which we can turn into BCOs (or object files), or used by some other backend See Note [Interface Files with Core Definitions] |
LoadedBCOs [Unlinked] | A list of BCOs, but hidden behind extra indirection to avoid being too strict. |
BCOs CompiledByteCode [SptEntry] | A byte-code object, lives only in memory. Also carries some static pointer table entries which should be loaded along with the BCOs. See Note [Grand plan for static forms] in GHC.Iface.Tidy.StaticPtrTable. |
Instances
An entry to be inserted into a module's static pointer table. See Note [Grand plan for static forms] in GHC.Iface.Tidy.StaticPtrTable.
Instances
isObjectLinkable :: Linkable -> Bool Source #
linkableObjs :: Linkable -> [FilePath] Source #
nameOfObject :: Unlinked -> FilePath Source #
Retrieve the filename of the linkable if possible. Panic if it is a byte-code object
isInterpretable :: Unlinked -> Bool Source #
Is this a bytecode linkable with no file on disk?
byteCodeOfObject :: Unlinked -> [CompiledByteCode] Source #
Retrieve the compiled byte-code if possible. Panic if it is a file-based linkable
data LibrarySpec Source #
Instances
Outputable LibrarySpec Source # | |
Defined in GHC.Linker.Types ppr :: LibrarySpec -> SDoc Source # |
data LoadedPkgInfo Source #
Instances
Outputable LoadedPkgInfo Source # | |
Defined in GHC.Linker.Types ppr :: LoadedPkgInfo -> SDoc Source # |
type PkgsLoaded = UniqDFM UnitId LoadedPkgInfo Source #