Safe Haskell | None |
---|---|
Language | GHC2021 |
Synopsis
- type DynTag = Int
- tagForCon :: Platform -> DataCon -> DynTag
- isSmallFamily :: Platform -> Int -> Bool
- idPrimRep1 :: Id -> PrimOrVoidRep
- idPrimRepU :: Id -> PrimRep
- isGcPtrRep :: PrimRep -> Bool
- addIdReps :: [NonVoid Id] -> [NonVoid (PrimRep, Id)]
- addArgReps :: [NonVoid StgArg] -> [NonVoid (PrimRep, StgArg)]
- newtype NonVoid a = NonVoid a
- fromNonVoid :: NonVoid a -> a
- nonVoidIds :: [Id] -> [NonVoid Id]
- nonVoidStgArgs :: [StgArg] -> [NonVoid StgArg]
- assertNonVoidIds :: [Id] -> [NonVoid Id]
- assertNonVoidStgArgs :: [StgArg] -> [NonVoid StgArg]
- data LambdaFormInfo
- data StandardFormInfo
- mkLFThunk :: Type -> TopLevelFlag -> [Id] -> UpdateFlag -> LambdaFormInfo
- mkLFReEntrant :: TopLevelFlag -> [Id] -> [Id] -> ArgDescr -> LambdaFormInfo
- mkConLFInfo :: DataCon -> LambdaFormInfo
- mkSelectorLFInfo :: Id -> Int -> Bool -> LambdaFormInfo
- mkApLFInfo :: Id -> UpdateFlag -> Arity -> LambdaFormInfo
- importedIdLFInfo :: Id -> LambdaFormInfo
- mkLFArgument :: Id -> LambdaFormInfo
- mkLFLetNoEscape :: LambdaFormInfo
- mkLFStringLit :: LambdaFormInfo
- lfDynTag :: Platform -> LambdaFormInfo -> DynTag
- isLFThunk :: LambdaFormInfo -> Bool
- isLFReEntrant :: LambdaFormInfo -> Bool
- lfUpdatable :: LambdaFormInfo -> Bool
- data CgLoc
- data CallMethod
- nodeMustPointToIt :: Profile -> LambdaFormInfo -> Bool
- isKnownFun :: LambdaFormInfo -> Bool
- funTag :: Platform -> ClosureInfo -> DynTag
- tagForArity :: Platform -> RepArity -> DynTag
- getCallMethod :: StgToCmmConfig -> Name -> Id -> LambdaFormInfo -> RepArity -> CgLoc -> Maybe SelfLoopInfo -> CallMethod
- data ClosureInfo
- mkClosureInfo :: Profile -> Bool -> Id -> LambdaFormInfo -> Int -> Int -> String -> ClosureInfo
- mkCmmInfo :: ClosureInfo -> Id -> CostCentreStack -> CmmInfoTable
- closureLFInfo :: ClosureInfo -> LambdaFormInfo
- closureName :: ClosureInfo -> Id
- closureInfoLabel :: ClosureInfo -> CLabel
- staticClosureLabel :: Platform -> ClosureInfo -> CLabel
- closureSlowEntryLabel :: Platform -> ClosureInfo -> CLabel
- closureLocalEntryLabel :: Platform -> ClosureInfo -> CLabel
- closureUpdReqd :: ClosureInfo -> Bool
- closureReEntrant :: ClosureInfo -> Bool
- closureFunInfo :: ClosureInfo -> Maybe (RepArity, ArgDescr)
- isToplevClosure :: ClosureInfo -> Bool
- blackHoleOnEntry :: ClosureInfo -> Bool
- isStaticClosure :: ClosureInfo -> Bool
- mkDataConInfoTable :: Profile -> DataCon -> ConInfoTableLocation -> Bool -> Int -> Int -> CmmInfoTable
- cafBlackHoleInfoTable :: CmmInfoTable
- indStaticInfoTable :: CmmInfoTable
- staticClosureNeedsLink :: Bool -> CmmInfoTable -> Bool
- mkClosureInfoTableLabel :: Platform -> Id -> LambdaFormInfo -> CLabel
Documentation
idPrimRep1 :: Id -> PrimOrVoidRep Source #
Assumes that there is at most one PrimRep
of the type. This assumption
holds after unarise.
See Note [Post-unarisation invariants] in GHC.Stg.Unarise.
See Note [VoidRep] in GHC.Types.RepType.
idPrimRepU :: Id -> PrimRep Source #
isGcPtrRep :: PrimRep -> Bool Source #
addIdReps :: [NonVoid Id] -> [NonVoid (PrimRep, Id)] Source #
Assumes that Ids have one PrimRep, which holds after unarisation. See Note [Post-unarisation invariants] in GHC.Stg.Unarise.
addArgReps :: [NonVoid StgArg] -> [NonVoid (PrimRep, StgArg)] Source #
Assumes that arguments have one PrimRep, which holds after unarisation. See Note [Post-unarisation invariants] in GHC.Stg.Unarise.
NonVoid a |
fromNonVoid :: NonVoid a -> a Source #
assertNonVoidIds :: [Id] -> [NonVoid Id] Source #
Used in places where some invariant ensures that all these Ids are non-void; e.g. constructor field binders in case expressions. See Note [Post-unarisation invariants] in GHC.Stg.Unarise.
assertNonVoidStgArgs :: [StgArg] -> [NonVoid StgArg] Source #
Used in places where some invariant ensures that all these arguments are non-void; e.g. constructor arguments. See Note [Post-unarisation invariants] in GHC.Stg.Unarise.
LambdaFormInfo
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.
Instances
Outputable LambdaFormInfo Source # | |
Defined in GHC.StgToCmm.Types ppr :: LambdaFormInfo -> SDoc Source # |
data StandardFormInfo Source #
StandardFormInfo tells whether this thunk has one of a small number of standard forms
Instances
Outputable StandardFormInfo Source # | |
Defined in GHC.StgToCmm.Types ppr :: StandardFormInfo -> SDoc Source # | |
Eq StandardFormInfo Source # | |
Defined in GHC.StgToCmm.Types (==) :: StandardFormInfo -> StandardFormInfo -> Bool # (/=) :: StandardFormInfo -> StandardFormInfo -> Bool # |
mkLFThunk :: Type -> TopLevelFlag -> [Id] -> UpdateFlag -> LambdaFormInfo Source #
mkLFReEntrant :: TopLevelFlag -> [Id] -> [Id] -> ArgDescr -> LambdaFormInfo Source #
mkConLFInfo :: DataCon -> LambdaFormInfo Source #
mkSelectorLFInfo :: Id -> Int -> Bool -> LambdaFormInfo Source #
mkApLFInfo :: Id -> UpdateFlag -> Arity -> LambdaFormInfo Source #
importedIdLFInfo :: Id -> LambdaFormInfo Source #
The LambdaFormInfo
of an imported Id.
See Note [The LFInfo of Imported Ids]
mkLFArgument :: Id -> LambdaFormInfo Source #
lfDynTag :: Platform -> LambdaFormInfo -> DynTag Source #
Return the tag in the low order bits of a variable bound to this LambdaForm
isLFThunk :: LambdaFormInfo -> Bool Source #
isLFReEntrant :: LambdaFormInfo -> Bool Source #
lfUpdatable :: LambdaFormInfo -> Bool Source #
Used by other modules
data CallMethod Source #
EnterIt | No args, not a function |
JumpToIt BlockId [LocalReg] | |
ReturnIt | |
InferedReturnIt | |
SlowCall | |
DirectEntry CLabel RepArity |
Instances
Outputable CallMethod Source # | |
Defined in GHC.StgToCmm.Closure ppr :: CallMethod -> SDoc Source # |
nodeMustPointToIt :: Profile -> LambdaFormInfo -> Bool Source #
isKnownFun :: LambdaFormInfo -> Bool Source #
getCallMethod :: StgToCmmConfig -> Name -> Id -> LambdaFormInfo -> RepArity -> CgLoc -> Maybe SelfLoopInfo -> CallMethod Source #
ClosureInfo
data ClosureInfo Source #
mkClosureInfo :: Profile -> Bool -> Id -> LambdaFormInfo -> Int -> Int -> String -> ClosureInfo Source #
mkCmmInfo :: ClosureInfo -> Id -> CostCentreStack -> CmmInfoTable Source #
Convert from ClosureInfo
to CmmInfoTable
.
Inspection
closureName :: ClosureInfo -> Id Source #
Labels
closureInfoLabel :: ClosureInfo -> CLabel Source #
staticClosureLabel :: Platform -> ClosureInfo -> CLabel Source #
closureSlowEntryLabel :: Platform -> ClosureInfo -> CLabel Source #
closureLocalEntryLabel :: Platform -> ClosureInfo -> CLabel Source #
Predicates
closureUpdReqd :: ClosureInfo -> Bool Source #
closureReEntrant :: ClosureInfo -> Bool Source #
closureFunInfo :: ClosureInfo -> Maybe (RepArity, ArgDescr) Source #
isToplevClosure :: ClosureInfo -> Bool Source #
blackHoleOnEntry :: ClosureInfo -> Bool Source #
isStaticClosure :: ClosureInfo -> Bool Source #
InfoTables
mkDataConInfoTable :: Profile -> DataCon -> ConInfoTableLocation -> Bool -> Int -> Int -> CmmInfoTable Source #
staticClosureNeedsLink :: Bool -> CmmInfoTable -> Bool Source #
mkClosureInfoTableLabel :: Platform -> Id -> LambdaFormInfo -> CLabel Source #
Get the info table label for a *thunk*.