Safe Haskell | None |
---|---|
Language | Haskell2010 |
- data StrDmd
- data UseDmd
- data Count
- type Demand = JointDmd ArgStr ArgUse
- type CleanDemand = JointDmd StrDmd UseDmd
- getStrDmd :: JointDmd s u -> s
- getUseDmd :: JointDmd s u -> u
- mkProdDmd :: [Demand] -> CleanDemand
- mkOnceUsedDmd :: CleanDemand -> Demand
- mkManyUsedDmd :: CleanDemand -> Demand
- mkHeadStrict :: CleanDemand -> CleanDemand
- oneifyDmd :: Demand -> Demand
- toCleanDmd :: Demand -> Type -> (DmdShell, CleanDemand)
- absDmd :: Demand
- topDmd :: Demand
- botDmd :: Demand
- seqDmd :: Demand
- lubDmd :: Demand -> Demand -> Demand
- bothDmd :: Demand -> Demand -> Demand
- lazyApply1Dmd :: Demand
- lazyApply2Dmd :: Demand
- strictApply1Dmd :: Demand
- catchArgDmd :: Demand
- isTopDmd :: Demand -> Bool
- isAbsDmd :: Demand -> Bool
- isSeqDmd :: Demand -> Bool
- peelUseCall :: UseDmd -> Maybe (Count, UseDmd)
- cleanUseDmd_maybe :: Demand -> Maybe UseDmd
- strictenDmd :: Demand -> CleanDemand
- bothCleanDmd :: CleanDemand -> CleanDemand -> CleanDemand
- addCaseBndrDmd :: Demand -> [Demand] -> [Demand]
- data DmdType = DmdType DmdEnv [Demand] DmdResult
- dmdTypeDepth :: DmdType -> Arity
- lubDmdType :: DmdType -> DmdType -> DmdType
- bothDmdType :: DmdType -> BothDmdArg -> DmdType
- nopDmdType :: DmdType
- botDmdType :: DmdType
- mkDmdType :: DmdEnv -> [Demand] -> DmdResult -> DmdType
- addDemand :: Demand -> DmdType -> DmdType
- removeDmdTyArgs :: DmdType -> DmdType
- type BothDmdArg = (DmdEnv, Termination ())
- mkBothDmdArg :: DmdEnv -> BothDmdArg
- toBothDmdArg :: DmdType -> BothDmdArg
- type DmdEnv = VarEnv Demand
- emptyDmdEnv :: VarEnv Demand
- peelFV :: DmdType -> Var -> (DmdType, Demand)
- findIdDemand :: DmdType -> Var -> Demand
- type DmdResult = Termination CPRResult
- data CPRResult
- isBotRes :: DmdResult -> Bool
- isTopRes :: DmdResult -> Bool
- topRes :: DmdResult
- botRes :: DmdResult
- exnRes :: DmdResult
- cprProdRes :: [DmdType] -> DmdResult
- vanillaCprProdRes :: Arity -> DmdResult
- cprSumRes :: ConTag -> DmdResult
- appIsBottom :: StrictSig -> Int -> Bool
- isBottomingSig :: StrictSig -> Bool
- pprIfaceStrictSig :: StrictSig -> SDoc
- trimCPRInfo :: Bool -> Bool -> DmdResult -> DmdResult
- returnsCPR_maybe :: DmdResult -> Maybe ConTag
- newtype StrictSig = StrictSig DmdType
- mkStrictSig :: DmdType -> StrictSig
- mkClosedStrictSig :: [Demand] -> DmdResult -> StrictSig
- nopSig :: StrictSig
- botSig :: StrictSig
- exnSig :: StrictSig
- cprProdSig :: Arity -> StrictSig
- isTopSig :: StrictSig -> Bool
- hasDemandEnvSig :: StrictSig -> Bool
- splitStrictSig :: StrictSig -> ([Demand], DmdResult)
- strictSigDmdEnv :: StrictSig -> DmdEnv
- increaseStrictSigArity :: Int -> StrictSig -> StrictSig
- seqDemand :: Demand -> ()
- seqDemandList :: [Demand] -> ()
- seqDmdType :: DmdType -> ()
- seqStrictSig :: StrictSig -> ()
- evalDmd :: Demand
- cleanEvalDmd :: CleanDemand
- cleanEvalProdDmd :: Arity -> CleanDemand
- isStrictDmd :: Demand -> Bool
- splitDmdTy :: DmdType -> (Demand, DmdType)
- splitFVs :: Bool -> DmdEnv -> (DmdEnv, DmdEnv)
- deferAfterIO :: DmdType -> DmdType
- postProcessUnsat :: DmdShell -> DmdType -> DmdType
- postProcessDmdType :: DmdShell -> DmdType -> BothDmdArg
- splitProdDmd_maybe :: Demand -> Maybe [Demand]
- peelCallDmd :: CleanDemand -> (CleanDemand, DmdShell)
- mkCallDmd :: CleanDemand -> CleanDemand
- mkWorkerDemand :: Int -> Demand
- dmdTransformSig :: StrictSig -> CleanDemand -> DmdType
- dmdTransformDataConSig :: Arity -> StrictSig -> CleanDemand -> DmdType
- dmdTransformDictSelSig :: StrictSig -> CleanDemand -> DmdType
- argOneShots :: Demand -> [OneShotInfo]
- argsOneShots :: StrictSig -> Arity -> [[OneShotInfo]]
- saturatedByOneShots :: Int -> Demand -> Bool
- trimToType :: Demand -> TypeShape -> Demand
- data TypeShape
- useCount :: Use u -> Count
- isUsedOnce :: Demand -> Bool
- reuseEnv :: DmdEnv -> DmdEnv
- killUsageDemand :: DynFlags -> Demand -> Demand
- killUsageSig :: DynFlags -> StrictSig -> StrictSig
- zapUsageDemand :: Demand -> Demand
- zapUsageEnvSig :: StrictSig -> StrictSig
- zapUsedOnceDemand :: Demand -> Demand
- zapUsedOnceSig :: StrictSig -> StrictSig
- strictifyDictDmd :: Type -> Demand -> Demand
Documentation
type CleanDemand = JointDmd StrDmd UseDmd #
mkProdDmd :: [Demand] -> CleanDemand #
mkOnceUsedDmd :: CleanDemand -> Demand #
mkManyUsedDmd :: CleanDemand -> Demand #
mkHeadStrict :: CleanDemand -> CleanDemand #
toCleanDmd :: Demand -> Type -> (DmdShell, CleanDemand) #
lazyApply1Dmd :: Demand #
lazyApply2Dmd :: Demand #
catchArgDmd :: Demand #
cleanUseDmd_maybe :: Demand -> Maybe UseDmd #
strictenDmd :: Demand -> CleanDemand #
bothCleanDmd :: CleanDemand -> CleanDemand -> CleanDemand #
addCaseBndrDmd :: Demand -> [Demand] -> [Demand] #
dmdTypeDepth :: DmdType -> Arity #
lubDmdType :: DmdType -> DmdType -> DmdType #
bothDmdType :: DmdType -> BothDmdArg -> DmdType #
nopDmdType :: DmdType #
botDmdType :: DmdType #
removeDmdTyArgs :: DmdType -> DmdType #
type BothDmdArg = (DmdEnv, Termination ()) #
mkBothDmdArg :: DmdEnv -> BothDmdArg #
toBothDmdArg :: DmdType -> BothDmdArg #
emptyDmdEnv :: VarEnv Demand #
findIdDemand :: DmdType -> Var -> Demand #
cprProdRes :: [DmdType] -> DmdResult #
vanillaCprProdRes :: Arity -> DmdResult #
appIsBottom :: StrictSig -> Int -> Bool #
isBottomingSig :: StrictSig -> Bool #
pprIfaceStrictSig :: StrictSig -> SDoc #
returnsCPR_maybe :: DmdResult -> Maybe ConTag #
mkStrictSig :: DmdType -> StrictSig #
mkClosedStrictSig :: [Demand] -> DmdResult -> StrictSig #
cprProdSig :: Arity -> StrictSig #
hasDemandEnvSig :: StrictSig -> Bool #
splitStrictSig :: StrictSig -> ([Demand], DmdResult) #
strictSigDmdEnv :: StrictSig -> DmdEnv #
increaseStrictSigArity :: Int -> StrictSig -> StrictSig #
seqDemandList :: [Demand] -> () #
seqDmdType :: DmdType -> () #
seqStrictSig :: StrictSig -> () #
cleanEvalProdDmd :: Arity -> CleanDemand #
isStrictDmd :: Demand -> Bool #
splitDmdTy :: DmdType -> (Demand, DmdType) #
deferAfterIO :: DmdType -> DmdType #
postProcessUnsat :: DmdShell -> DmdType -> DmdType #
postProcessDmdType :: DmdShell -> DmdType -> BothDmdArg #
splitProdDmd_maybe :: Demand -> Maybe [Demand] #
peelCallDmd :: CleanDemand -> (CleanDemand, DmdShell) #
mkCallDmd :: CleanDemand -> CleanDemand #
mkWorkerDemand :: Int -> Demand #
dmdTransformSig :: StrictSig -> CleanDemand -> DmdType #
dmdTransformDataConSig :: Arity -> StrictSig -> CleanDemand -> DmdType #
dmdTransformDictSelSig :: StrictSig -> CleanDemand -> DmdType #
argOneShots :: Demand -> [OneShotInfo] #
argsOneShots :: StrictSig -> Arity -> [[OneShotInfo]] #
saturatedByOneShots :: Int -> Demand -> Bool #
trimToType :: Demand -> TypeShape -> Demand #
isUsedOnce :: Demand -> Bool #
killUsageDemand :: DynFlags -> Demand -> Demand #
killUsageSig :: DynFlags -> StrictSig -> StrictSig #
zapUsageDemand :: Demand -> Demand #
zapUsageEnvSig :: StrictSig -> StrictSig #
zapUsedOnceDemand :: Demand -> Demand #
Remove all 1* information (but not C1 information) from the demand
zapUsedOnceSig :: StrictSig -> StrictSig #
Remove all 1* information (but not C1 information) from the strictness signature
strictifyDictDmd :: Type -> Demand -> Demand #