ghc-lib-0.20190204: The GHC API, decoupled from GHC versions

Safe HaskellNone
LanguageHaskell2010

StgCmmMonad

Synopsis

Documentation

data FCode a Source #

Instances
Instance details

Defined in StgCmmMonad

Methods

(>>=) :: FCode a -> (a -> FCode b) -> FCode b #

(>>) :: FCode a -> FCode b -> FCode b #

return :: a -> FCode a #

fail :: String -> FCode a #

Instance details

Defined in StgCmmMonad

Methods

fmap :: (a -> b) -> FCode a -> FCode b #

(<$) :: a -> FCode b -> FCode a #

Instance details

Defined in StgCmmMonad

Methods

pure :: a -> FCode a #

(<*>) :: FCode (a -> b) -> FCode a -> FCode b #

liftA2 :: (a -> b -> c) -> FCode a -> FCode b -> FCode c #

(*>) :: FCode a -> FCode b -> FCode b #

(<*) :: FCode a -> FCode b -> FCode a #

Instance details

Defined in StgCmmMonad

initC :: IO CgState Source #

runC :: DynFlags -> Module -> CgState -> FCode a -> (a, CgState) Source #

fixC :: (a -> FCode a) -> FCode a Source #

newUnique :: FCode Unique Source #

emitLabel :: BlockId -> FCode () Source #

emit :: CmmAGraph -> FCode () Source #

emitDecl :: CmmDecl -> FCode () Source #

emitProc :: Maybe CmmInfoTable -> CLabel -> [GlobalReg] -> CmmAGraphScoped -> Int -> FCode () 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 #

emitAssign :: CmmReg -> CmmExpr -> FCode () Source #

emitStore :: CmmExpr -> CmmExpr -> FCode () Source #

emitComment :: FastString -> FCode () Source #

emitTick :: CmmTickish -> FCode () Source #

emitUnwind :: [(GlobalReg, Maybe CmmExpr)] -> FCode () Source #

getCmm :: FCode () -> FCode CmmGroup Source #

aGraphToGraph :: CmmAGraphScoped -> FCode CmmGraph Source #

getCodeR :: FCode a -> FCode (a, CmmAGraph) Source #

getCode :: FCode a -> FCode CmmAGraph 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 #

mkCmmIfThenElse :: CmmExpr -> CmmAGraph -> CmmAGraph -> FCode CmmAGraph Source #

mkCmmIfThen :: CmmExpr -> CmmAGraph -> FCode CmmAGraph Source #

mkCmmIfGoto :: CmmExpr -> BlockId -> FCode CmmAGraph Source #

mkCmmIfThenElse' :: CmmExpr -> CmmAGraph -> CmmAGraph -> Maybe Bool -> FCode CmmAGraph Source #

mkCmmIfThen' :: CmmExpr -> CmmAGraph -> Maybe Bool -> FCode CmmAGraph Source #

mkCmmIfGoto' :: CmmExpr -> BlockId -> Maybe Bool -> FCode CmmAGraph Source #

mkCall :: CmmExpr -> (Convention, Convention) -> [CmmFormal] -> [CmmExpr] -> UpdFrameOffset -> [CmmExpr] -> FCode CmmAGraph Source #

mkCmmCall :: CmmExpr -> [CmmFormal] -> [CmmExpr] -> UpdFrameOffset -> FCode CmmAGraph Source #

forkClosureBody :: FCode () -> FCode () Source #

forkLneBody :: FCode a -> FCode a Source #

forkAlts :: [FCode a] -> FCode [a] Source #

forkAltPair :: FCode a -> FCode a -> FCode (a, a) Source #

codeOnly :: FCode () -> FCode () Source #

type ConTagZ = Int Source #

A *zero-indexed* constructor tag

data Sequel Source #

Constructors

Instances
Instance details

Defined in StgCmmMonad

data ReturnKind Source #

Constructors

withSequel :: Sequel -> FCode a -> FCode a Source #

getSequel :: FCode Sequel Source #

setTickyCtrLabel :: CLabel -> FCode a -> FCode a Source #

getTickyCtrLabel :: FCode CLabel Source #

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 #

getUpdFrameOff :: FCode UpdFrameOffset Source #

initUpdFrameOff :: DynFlags -> UpdFrameOffset Source #

data HeapUsage Source #

Constructors

type VirtualHpOffset = WordOff Source #

initHpUsage :: HeapUsage Source #

getHpUsage :: FCode HeapUsage Source #

setHpUsage :: HeapUsage -> FCode () Source #

heapHWM :: HeapUsage -> VirtualHpOffset Source #

setVirtHp :: VirtualHpOffset -> FCode () Source #

getVirtHp :: FCode VirtualHpOffset Source #

setRealHp :: VirtualHpOffset -> FCode () Source #

getModuleName :: FCode Module Source #

getState :: FCode CgState Source #

setState :: CgState -> FCode () Source #

getSelfLoop :: FCode (Maybe SelfLoopInfo) Source #

withSelfLoop :: SelfLoopInfo -> FCode a -> FCode a Source #

getInfoDown :: FCode CgInfoDownwards Source #

getDynFlags :: HasDynFlags m => m DynFlags Source #

getThisPackage :: FCode UnitId Source #

data CgIdInfo Source #

Constructors

Instances
Instance details

Defined in StgCmmMonad

getBinds :: FCode CgBindings Source #

setBinds :: CgBindings -> FCode () Source #

data CgInfoDownwards Source #

Constructors

data CgState Source #

Constructors

AltStyle によって変換されたページ (->オリジナル) /