| Safe Haskell | None |
|---|---|
| Language | GHC2021 |
GHC.StgToCmm.Utils
Contents
Synopsis
- emitDataLits :: CLabel -> [CmmLit] -> FCode ()
- emitRODataLits :: CLabel -> [CmmLit] -> FCode ()
- emitDataCon :: CLabel -> CmmInfoTable -> CostCentreStack -> [CmmLit] -> FCode ()
- emitRtsCall :: UnitId -> FastString -> [(CmmExpr, ForeignHint)] -> Bool -> FCode ()
- emitRtsCallWithResult :: LocalReg -> ForeignHint -> UnitId -> FastString -> [(CmmExpr, ForeignHint)] -> Bool -> FCode ()
- emitRtsCallGen :: [(LocalReg, ForeignHint)] -> CLabel -> [(CmmExpr, ForeignHint)] -> Bool -> FCode ()
- emitBarf :: String -> FCode ()
- assignTemp :: CmmExpr -> FCode LocalReg
- newTemp :: MonadGetUnique m => CmmType -> m LocalReg
- newUnboxedTupleRegs :: Type -> FCode ([LocalReg], [ForeignHint])
- emitMultiAssign :: [LocalReg] -> [CmmExpr] -> FCode ()
- emitCmmLitSwitch :: CmmExpr -> [(Literal, CmmAGraphScoped)] -> CmmAGraphScoped -> FCode ()
- emitSwitch :: CmmExpr -> [(ConTagZ, CmmAGraphScoped)] -> Maybe CmmAGraphScoped -> ConTagZ -> ConTagZ -> FCode ()
- tagToClosure :: Platform -> TyCon -> CmmExpr -> CmmExpr
- mkTaggedObjectLoad :: Platform -> LocalReg -> LocalReg -> ByteOff -> DynTag -> CmmAGraph
- callerSaves :: Platform -> GlobalReg -> Bool
- callerSaveVolatileRegs :: Platform -> (CmmAGraph, CmmAGraph)
- get_GlobalReg_addr :: Platform -> GlobalReg -> CmmExpr
- callerSaveGlobalReg :: Platform -> GlobalReg -> CmmAGraph
- callerRestoreGlobalReg :: Platform -> GlobalReg -> CmmAGraph
- cmmAndWord :: Platform -> CmmExpr -> CmmExpr -> CmmExpr
- cmmOrWord :: Platform -> CmmExpr -> CmmExpr -> CmmExpr
- cmmNegate :: Platform -> CmmExpr -> CmmExpr
- cmmEqWord :: Platform -> CmmExpr -> CmmExpr -> CmmExpr
- cmmNeWord :: Platform -> CmmExpr -> CmmExpr -> CmmExpr
- cmmUGtWord :: Platform -> CmmExpr -> CmmExpr -> CmmExpr
- cmmSubWord :: Platform -> CmmExpr -> CmmExpr -> CmmExpr
- cmmMulWord :: Platform -> CmmExpr -> CmmExpr -> CmmExpr
- cmmAddWord :: Platform -> CmmExpr -> CmmExpr -> CmmExpr
- cmmUShrWord :: Platform -> CmmExpr -> CmmExpr -> CmmExpr
- cmmOffsetExprW :: Platform -> CmmExpr -> CmmExpr -> CmmExpr
- cmmOffsetExprB :: Platform -> CmmExpr -> CmmExpr -> CmmExpr
- cmmRegOffW :: Platform -> CmmReg -> WordOff -> CmmExpr
- cmmRegOffB :: CmmReg -> ByteOff -> CmmExpr
- cmmLabelOffW :: Platform -> CLabel -> WordOff -> CmmLit
- cmmLabelOffB :: CLabel -> ByteOff -> CmmLit
- cmmOffsetW :: Platform -> CmmExpr -> WordOff -> CmmExpr
- cmmOffsetB :: Platform -> CmmExpr -> ByteOff -> CmmExpr
- cmmOffsetLitW :: Platform -> CmmLit -> WordOff -> CmmLit
- cmmOffsetLitB :: CmmLit -> ByteOff -> CmmLit
- cmmLoadIndexW :: Platform -> CmmExpr -> Int -> CmmType -> CmmExpr
- cmmConstrTag1 :: Platform -> CmmExpr -> CmmExpr
- cmmUntag :: Platform -> CmmExpr -> CmmExpr
- cmmIsTagged :: Platform -> CmmExpr -> CmmExpr
- addToMem :: CmmType -> CmmExpr -> Int -> CmmAGraph
- addToMemE :: CmmType -> CmmExpr -> CmmExpr -> CmmAGraph
- addToMemLblE :: CmmType -> CLabel -> CmmExpr -> CmmAGraph
- addToMemLbl :: CmmType -> CLabel -> Int -> CmmAGraph
- emitAtomicRead :: MemoryOrdering -> LocalReg -> CmmExpr -> FCode ()
- emitAtomicWrite :: MemoryOrdering -> CmmExpr -> CmmExpr -> FCode ()
- whenUpdRemSetEnabled :: FCode a -> FCode ()
- emitUpdRemSetPush :: CmmExpr -> FCode ()
- emitUpdRemSetPushThunk :: CmmExpr -> FCode ()
- convertInfoProvMap :: StgToCmmConfig -> Module -> InfoTableProvMap -> IPEStats -> [CmmInfoTable] -> (IPEStats, [InfoProvEnt])
- cmmInfoTableToInfoProvEnt :: Module -> CmmInfoTable -> InfoProvEnt
- data IPEStats = IPEStats {
- ipe_total :: !Int
- ipe_closure_types :: !(IntMap Int)
- ipe_fallback :: !Int
- ipe_skipped :: !Int
- closureIpeStats :: Int -> IPEStats
- fallbackIpeStats :: IPEStats
- skippedIpeStats :: IPEStats
Documentation
emitDataLits :: CLabel -> [CmmLit] -> FCode () #
Emit a data-segment data block
emitRODataLits :: CLabel -> [CmmLit] -> FCode () #
Emit a read-only data block
emitDataCon :: CLabel -> CmmInfoTable -> CostCentreStack -> [CmmLit] -> FCode () #
emitRtsCall :: UnitId -> FastString -> [(CmmExpr, ForeignHint)] -> Bool -> FCode () #
emitRtsCallWithResult :: LocalReg -> ForeignHint -> UnitId -> FastString -> [(CmmExpr, ForeignHint)] -> Bool -> FCode () #
emitRtsCallGen :: [(LocalReg, ForeignHint)] -> CLabel -> [(CmmExpr, ForeignHint)] -> Bool -> FCode () #
assignTemp :: CmmExpr -> FCode LocalReg #
newTemp :: MonadGetUnique m => CmmType -> m LocalReg #
newUnboxedTupleRegs :: Type -> FCode ([LocalReg], [ForeignHint]) #
emitMultiAssign :: [LocalReg] -> [CmmExpr] -> FCode () #
emitCmmLitSwitch :: CmmExpr -> [(Literal, CmmAGraphScoped)] -> CmmAGraphScoped -> FCode () #
emitSwitch :: CmmExpr -> [(ConTagZ, CmmAGraphScoped)] -> Maybe CmmAGraphScoped -> ConTagZ -> ConTagZ -> FCode () #
callerSaves :: Platform -> GlobalReg -> Bool #
Returns True if this global register is stored in a caller-saves
machine register.
callerSaveVolatileRegs :: Platform -> (CmmAGraph, CmmAGraph) #
get_GlobalReg_addr :: Platform -> GlobalReg -> CmmExpr #
We map STG registers onto appropriate CmmExprs. Either they map to real machine registers or stored as offsets from BaseReg. Given a GlobalReg, get_GlobalReg_addr always produces the register table address for it.
callerSaveGlobalReg :: Platform -> GlobalReg -> CmmAGraph #
callerRestoreGlobalReg :: Platform -> GlobalReg -> CmmAGraph #
cmmRegOffB :: CmmReg -> ByteOff -> CmmExpr #
cmmLabelOffB :: CLabel -> ByteOff -> CmmLit #
cmmOffsetLitB :: CmmLit -> ByteOff -> CmmLit #
cmmConstrTag1 :: Platform -> CmmExpr -> CmmExpr #
cmmIsTagged :: Platform -> CmmExpr -> CmmExpr #
addToMem :: CmmType -> CmmExpr -> Int -> CmmAGraph #
addToMem rep ptr n adds n to the integer pointed-to by ptr.
addToMemE :: CmmType -> CmmExpr -> CmmExpr -> CmmAGraph #
addToMemE rep ptr n adds n to the integer pointed-to by ptr.
Arguments
| :: MemoryOrdering | |
| -> LocalReg | result register |
| -> CmmExpr | address |
| -> FCode () |
Arguments
| :: MemoryOrdering | |
| -> CmmExpr | address |
| -> CmmExpr | value |
| -> FCode () |
Update remembered set operations
whenUpdRemSetEnabled :: FCode a -> FCode () #
Emit code to add an entry to a now-overwritten pointer to the update remembered set.
convertInfoProvMap :: StgToCmmConfig -> Module -> InfoTableProvMap -> IPEStats -> [CmmInfoTable] -> (IPEStats, [InfoProvEnt]) #
Convert source information collected about identifiers in Debug
to entries suitable for placing into the info table provenance table.
The initial stats given to this function will (or should) only contain stats
for stack info tables skipped during generateCgIPEStub. As the fold
progresses, counts of tables per closure type will be accumulated.
cmmInfoTableToInfoProvEnt :: Module -> CmmInfoTable -> InfoProvEnt #
A bare bones InfoProvEnt for things which don't have a good source location
Constructors
| IPEStats | |
Fields
| |
Instances
| Outputable IPEStats # | |
Defined in GHC.StgToCmm.Utils | |
| Monoid IPEStats # | |
| Semigroup IPEStats # | |
closureIpeStats :: Int -> IPEStats #