| Safe Haskell | None | 
|---|---|
| Language | Haskell2010 | 
GHC.StgToCmm.Monad
Synopsis
- data FCode a
 - initC :: IO CgState
 - initFCodeState :: Platform -> FCodeState
 - runC :: StgToCmmConfig -> FCodeState -> CgState -> FCode a -> (a, CgState)
 - fixC :: (a -> FCode a) -> FCode a
 - newUnique :: FCode Unique
 - emitLabel :: BlockId -> FCode ()
 - emit :: CmmAGraph -> FCode ()
 - emitDecl :: CmmDecl -> FCode ()
 - emitProcWithConvention :: Convention -> Maybe CmmInfoTable -> CLabel -> [CmmFormal] -> CmmAGraphScoped -> FCode ()
 - emitProcWithStackFrame :: Convention -> Maybe CmmInfoTable -> CLabel -> [CmmFormal] -> [CmmFormal] -> CmmAGraphScoped -> Bool -> FCode ()
 - emitOutOfLine :: BlockId -> CmmAGraphScoped -> FCode ()
 - emitAssign :: CmmReg -> CmmExpr -> FCode ()
 - emitStore :: CmmExpr -> CmmExpr -> FCode ()
 - emitStore' :: AlignmentSpec -> CmmExpr -> CmmExpr -> FCode ()
 - emitComment :: FastString -> FCode ()
 - emitTick :: CmmTickish -> FCode ()
 - emitUnwind :: [(GlobalReg, Maybe CmmExpr)] -> FCode ()
 - newTemp :: MonadUnique m => CmmType -> m LocalReg
 - getCmm :: FCode a -> FCode (a, CmmGroup)
 - aGraphToGraph :: CmmAGraphScoped -> FCode CmmGraph
 - getPlatform :: FCode Platform
 - getProfile :: FCode Profile
 - getCodeR :: FCode a -> FCode (a, CmmAGraph)
 - getCode :: FCode a -> FCode CmmAGraph
 - getCodeScoped :: FCode a -> FCode (a, CmmAGraphScoped)
 - getHeapUsage :: (VirtualHpOffset -> FCode a) -> FCode a
 - getContext :: FCode SDocContext
 - mkCmmIfThenElse :: CmmExpr -> CmmAGraph -> CmmAGraph -> FCode CmmAGraph
 - mkCmmIfThen :: CmmExpr -> CmmAGraph -> FCode CmmAGraph
 - mkCmmIfGoto :: CmmExpr -> BlockId -> FCode CmmAGraph
 - mkCmmIfThenElse' :: CmmExpr -> CmmAGraph -> CmmAGraph -> Maybe Bool -> FCode CmmAGraph
 - mkCmmIfThen' :: CmmExpr -> CmmAGraph -> Maybe Bool -> FCode CmmAGraph
 - mkCmmIfGoto' :: CmmExpr -> BlockId -> Maybe Bool -> FCode CmmAGraph
 - mkCall :: CmmExpr -> (Convention, Convention) -> [CmmFormal] -> [CmmExpr] -> UpdFrameOffset -> [CmmExpr] -> FCode CmmAGraph
 - mkCmmCall :: CmmExpr -> [CmmFormal] -> [CmmExpr] -> UpdFrameOffset -> FCode CmmAGraph
 - forkClosureBody :: FCode () -> FCode ()
 - forkLneBody :: FCode a -> FCode a
 - forkAlts :: [FCode a] -> FCode [a]
 - forkAltPair :: FCode a -> FCode a -> FCode (a, a)
 - codeOnly :: FCode () -> FCode ()
 - type ConTagZ = Int
 - data Sequel
 - data ReturnKind
 - withSequel :: Sequel -> FCode a -> FCode a
 - getSequel :: FCode Sequel
 - setTickyCtrLabel :: CLabel -> FCode a -> FCode a
 - getTickyCtrLabel :: FCode CLabel
 - tickScope :: FCode a -> FCode a
 - getTickScope :: FCode CmmTickScope
 - withUpdFrameOff :: UpdFrameOffset -> FCode a -> FCode a
 - getUpdFrameOff :: FCode UpdFrameOffset
 - data HeapUsage = HeapUsage {}
 - type VirtualHpOffset = WordOff
 - initHpUsage :: HeapUsage
 - getHpUsage :: FCode HeapUsage
 - setHpUsage :: HeapUsage -> FCode ()
 - heapHWM :: HeapUsage -> VirtualHpOffset
 - setVirtHp :: VirtualHpOffset -> FCode ()
 - getVirtHp :: FCode VirtualHpOffset
 - setRealHp :: VirtualHpOffset -> FCode ()
 - getModuleName :: FCode Module
 - getState :: FCode CgState
 - setState :: CgState -> FCode ()
 - getSelfLoop :: FCode (Maybe SelfLoopInfo)
 - withSelfLoop :: SelfLoopInfo -> FCode a -> FCode a
 - getStgToCmmConfig :: FCode StgToCmmConfig
 - data CgIdInfo = CgIdInfo {}
 - getBinds :: FCode CgBindings
 - setBinds :: CgBindings -> FCode ()
 - data StgToCmmConfig = StgToCmmConfig {
- stgToCmmProfile :: !Profile
 - stgToCmmThisModule :: Module
 - stgToCmmTmpDir :: !TempDir
 - stgToCmmContext :: !SDocContext
 - stgToCmmEmitDebugInfo :: !Bool
 - stgToCmmBinBlobThresh :: !(Maybe Word)
 - stgToCmmMaxInlAllocSize :: !Int
 - stgToCmmDoTicky :: !Bool
 - stgToCmmTickyAllocd :: !Bool
 - stgToCmmTickyLNE :: !Bool
 - stgToCmmTickyDynThunk :: !Bool
 - stgToCmmTickyTag :: !Bool
 - stgToCmmLoopification :: !Bool
 - stgToCmmAlignCheck :: !Bool
 - stgToCmmOptHpc :: !Bool
 - stgToCmmFastPAPCalls :: !Bool
 - stgToCmmSCCProfiling :: !Bool
 - stgToCmmEagerBlackHole :: !Bool
 - stgToCmmInfoTableMap :: !Bool
 - stgToCmmOmitYields :: !Bool
 - stgToCmmOmitIfPragmas :: !Bool
 - stgToCmmPIC :: !Bool
 - stgToCmmPIE :: !Bool
 - stgToCmmExtDynRefs :: !Bool
 - stgToCmmDoBoundsCheck :: !Bool
 - stgToCmmDoTagCheck :: !Bool
 - stgToCmmAllowBigArith :: !Bool
 - stgToCmmAllowQuotRemInstr :: !Bool
 - stgToCmmAllowQuotRem2 :: !Bool
 - stgToCmmAllowExtendedAddSubInstrs :: !Bool
 - stgToCmmAllowIntMul2Instr :: !Bool
 - stgToCmmAllowFMAInstr :: FMASign -> Bool
 - stgToCmmTickyAP :: !Bool
 - stgToCmmVecInstrsErr :: Maybe String
 - stgToCmmAvx :: !Bool
 - stgToCmmAvx2 :: !Bool
 - stgToCmmAvx512f :: !Bool
 
 - data CgState = MkCgState {
- cgs_stmts :: CmmAGraph
 - cgs_tops :: OrdList CmmDecl
 - cgs_binds :: CgBindings
 - cgs_hp_usg :: HeapUsage
 - cgs_uniqs :: UniqSupply
 
 
Documentation
Instances
| Applicative FCode Source # | |
| Functor FCode Source # | |
| Monad FCode Source # | |
| MonadUnique FCode Source # | |
Defined in GHC.StgToCmm.Monad Methods getUniqueSupplyM :: FCode UniqSupply Source # getUniqueM :: FCode Unique Source # getUniquesM :: FCode [Unique] Source #  | |
initFCodeState :: Platform -> FCodeState Source #
emitProcWithConvention :: Convention -> Maybe CmmInfoTable -> CLabel -> [CmmFormal] -> CmmAGraphScoped -> FCode () Source #
emitProcWithStackFrame :: Convention -> Maybe CmmInfoTable -> CLabel -> [CmmFormal] -> [CmmFormal] -> CmmAGraphScoped -> Bool -> FCode () Source #
emitOutOfLine :: BlockId -> CmmAGraphScoped -> FCode () Source #
emitStore' :: AlignmentSpec -> CmmExpr -> CmmExpr -> FCode () Source #
emitComment :: FastString -> FCode () Source #
emitTick :: CmmTickish -> FCode () Source #
getCodeScoped :: FCode a -> FCode (a, CmmAGraphScoped) Source #
Generate code into a fresh tick (sub-)scope and gather generated code
getHeapUsage :: (VirtualHpOffset -> FCode a) -> FCode a Source #
mkCall :: CmmExpr -> (Convention, Convention) -> [CmmFormal] -> [CmmExpr] -> UpdFrameOffset -> [CmmExpr] -> FCode CmmAGraph Source #
forkClosureBody :: FCode () -> FCode () Source #
forkLneBody :: FCode a -> FCode a Source #
A Sequel tells what to do with the result of this expression
Instances
data ReturnKind Source #
Constructors
| AssignedDirectly | |
| ReturnedTo BlockId ByteOff | 
tickScope :: FCode a -> FCode a Source #
Places blocks generated by the given code into a fresh (sub-)scope. This will make sure that Cmm annotations in our scope will apply to the Cmm blocks generated therein - but not the other way around.
getTickScope :: FCode CmmTickScope Source #
The current tick scope. We will assign this to generated blocks.
withUpdFrameOff :: UpdFrameOffset -> FCode a -> FCode a Source #
Constructors
| HeapUsage | |
Fields  | |
type VirtualHpOffset = WordOff Source #
setHpUsage :: HeapUsage -> FCode () Source #
heapHWM :: HeapUsage -> VirtualHpOffset Source #
setVirtHp :: VirtualHpOffset -> FCode () Source #
setRealHp :: VirtualHpOffset -> FCode () Source #
getSelfLoop :: FCode (Maybe SelfLoopInfo) Source #
withSelfLoop :: SelfLoopInfo -> FCode a -> FCode a Source #
Constructors
| CgIdInfo | |
data StgToCmmConfig Source #
Constructors
| StgToCmmConfig | |
Fields 
  | |