ghc-9.6.3: The GHC API

Safe Haskell | Safe-Inferred
Language | Haskell2010

GHC.StgToCmm.Heap

Synopsis

- getVirtHp :: FCode VirtualHpOffset
- setVirtHp :: VirtualHpOffset -> FCode ()
- setRealHp :: VirtualHpOffset -> FCode ()
- getHpRelOffset :: VirtualHpOffset -> FCode CmmExpr
- entryHeapCheck :: ClosureInfo -> Maybe LocalReg -> Int -> [LocalReg] -> FCode () -> FCode ()
- altHeapCheck :: [LocalReg] -> FCode a -> FCode a
- noEscapeHeapCheck :: [LocalReg] -> FCode a -> FCode a
- altHeapCheckReturnsTo :: [LocalReg] -> Label -> ByteOff -> FCode a -> FCode a
- heapStackCheckGen :: Maybe CmmExpr -> Maybe CmmExpr -> FCode ()
- entryHeapCheck' :: Bool -> CmmExpr -> Int -> [LocalReg] -> FCode () -> FCode ()
- mkStaticClosureFields :: Profile -> CmmInfoTable -> CostCentreStack -> CafInfo -> [CmmLit] -> [CmmLit] -> [CmmLit]
- mkStaticClosure :: Profile -> CLabel -> CostCentreStack -> [CmmLit] -> [CmmLit] -> [CmmLit] -> [CmmLit] -> [CmmLit] -> [CmmLit]
- allocDynClosure :: Maybe Id -> CmmInfoTable -> LambdaFormInfo -> CmmExpr -> CmmExpr -> [(NonVoid StgArg, VirtualHpOffset)] -> FCode CmmExpr
- allocDynClosureCmm :: Maybe Id -> CmmInfoTable -> LambdaFormInfo -> CmmExpr -> CmmExpr -> [(CmmExpr, ByteOff)] -> FCode CmmExpr
- allocHeapClosure :: SMRep -> CmmExpr -> CmmExpr -> [(CmmExpr, ByteOff)] -> FCode CmmExpr
- emitSetDynHdr :: CmmExpr -> CmmExpr -> CmmExpr -> FCode ()

# Documentation

getVirtHp :: FCode VirtualHpOffset Source #

setVirtHp :: VirtualHpOffset -> FCode () Source #

setRealHp :: VirtualHpOffset -> FCode () Source #

getHpRelOffset :: VirtualHpOffset -> FCode CmmExpr Source #

entryHeapCheck :: ClosureInfo -> Maybe LocalReg -> Int -> [LocalReg] -> FCode () -> FCode () Source #

altHeapCheck :: [LocalReg] -> FCode a -> FCode a Source #

noEscapeHeapCheck :: [LocalReg] -> FCode a -> FCode a Source #

altHeapCheckReturnsTo :: [LocalReg] -> Label -> ByteOff -> FCode a -> FCode a Source #

heapStackCheckGen :: Maybe CmmExpr -> Maybe CmmExpr -> FCode () Source #

entryHeapCheck' :: Bool -> CmmExpr -> Int -> [LocalReg] -> FCode () -> FCode () Source #

lower-level version for GHC.Cmm.Parser

mkStaticClosureFields Source #

Arguments

:: Profile |
-> CmmInfoTable |
-> CostCentreStack |
-> CafInfo |
-> [CmmLit] | Payload
-> [CmmLit] | Extra non-pointers that go to the end of the closure. See Note [unpack_cstring closures] in StgStdThunks.cmm.
-> [CmmLit] |

Make a static closure, adding on any extra padding needed for CAFs, and adding a static link field if necessary.

mkStaticClosure :: Profile -> CLabel -> CostCentreStack -> [CmmLit] -> [CmmLit] -> [CmmLit] -> [CmmLit] -> [CmmLit] -> [CmmLit] Source #

allocDynClosure :: Maybe Id -> CmmInfoTable -> LambdaFormInfo -> CmmExpr -> CmmExpr -> [(NonVoid StgArg, VirtualHpOffset)] -> FCode CmmExpr Source #

allocDynClosureCmm :: Maybe Id -> CmmInfoTable -> LambdaFormInfo -> CmmExpr -> CmmExpr -> [(CmmExpr, ByteOff)] -> FCode CmmExpr Source #

allocHeapClosure Source #

Arguments

:: SMRep | representation of the object
-> CmmExpr | info pointer
-> CmmExpr | cost centre
-> [(CmmExpr, ByteOff)] | payload
-> FCode CmmExpr | returns the address of the object

Low-level heap object allocation.

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