Safe Haskell | Safe-Inferred |
---|---|
Language | Haskell2010 |
Synopsis
- data CgInfos = CgInfos {
- cgNonCafs :: !NonCaffySet
- cgLFInfos :: !ModuleLFInfos
- cgIPEStub :: !CStub
- data LambdaFormInfo
- type ModuleLFInfos = NameEnv LambdaFormInfo
- type Liveness = [Bool]
- data ArgDescr
- = ArgSpec !Int
- | ArgGen Liveness
- | ArgUnknown
- data StandardFormInfo
- type WordOff = Int
Documentation
Codegen-generated Id infos, to be passed to downstream via interfaces.
This stuff is for optimization purposes only, they're not compulsory.
- When CafInfo of an imported Id is not known it's safe to treat it as CAFFY.
- When LambdaFormInfo of an imported Id is not known it's safe to treat it as `LFUnknown True` (which just says "it could be anything" and we do slow entry).
See also Note [Conveying CAF-info and LFInfo between modules] above.
CgInfos | |
|
data LambdaFormInfo Source #
Information about an identifier, from the code generator's point of view. Every identifier is bound to a LambdaFormInfo in the environment, which gives the code generator enough info to be able to tail call or return that identifier.
LFReEntrant !TopLevelFlag !RepArity !Bool !ArgDescr | |
LFThunk !TopLevelFlag !Bool !Bool !StandardFormInfo !Bool | |
LFCon !DataCon | |
LFUnknown !Bool | |
LFUnlifted | |
LFLetNoEscape |
Instances
Outputable LambdaFormInfo # | |
Defined in GHC.StgToCmm.Types ppr :: LambdaFormInfo -> SDoc Source # |
type ModuleLFInfos = NameEnv LambdaFormInfo Source #
Maps names in the current module to their LambdaFormInfos
type Liveness = [Bool] Source #
We represent liveness bitmaps as a Bitmap (whose internal representation really is a bitmap). These are pinned onto case return vectors to indicate the state of the stack for the garbage collector.
In the compiled program, liveness bitmaps that fit inside a single word (StgWord) are stored as a single word, while larger bitmaps are stored as a pointer to an array of words.
An ArgDescr describes the argument pattern of a function
data StandardFormInfo Source #
StandardFormInfo tells whether this thunk has one of a small number of standard forms
Instances
Outputable StandardFormInfo # | |
Defined in GHC.StgToCmm.Types ppr :: StandardFormInfo -> SDoc Source # | |
Eq StandardFormInfo # | |
Defined in GHC.StgToCmm.Types (==) :: StandardFormInfo -> StandardFormInfo -> Bool # (/=) :: StandardFormInfo -> StandardFormInfo -> Bool # |