Safe Haskell | None |
---|---|
Language | GHC2021 |
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 :: MonadUnique 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
emitDataCon :: CLabel -> CmmInfoTable -> CostCentreStack -> [CmmLit] -> FCode () Source #
emitRtsCall :: UnitId -> FastString -> [(CmmExpr, ForeignHint)] -> Bool -> FCode () Source #
emitRtsCallWithResult :: LocalReg -> ForeignHint -> UnitId -> FastString -> [(CmmExpr, ForeignHint)] -> Bool -> FCode () Source #
emitRtsCallGen :: [(LocalReg, ForeignHint)] -> CLabel -> [(CmmExpr, ForeignHint)] -> Bool -> FCode () Source #
newUnboxedTupleRegs :: Type -> FCode ([LocalReg], [ForeignHint]) Source #
emitCmmLitSwitch :: CmmExpr -> [(Literal, CmmAGraphScoped)] -> CmmAGraphScoped -> FCode () Source #
emitSwitch :: CmmExpr -> [(ConTagZ, CmmAGraphScoped)] -> Maybe CmmAGraphScoped -> ConTagZ -> ConTagZ -> FCode () Source #
callerSaves :: Platform -> GlobalReg -> Bool Source #
Returns True
if this global register is stored in a caller-saves
machine register.
get_GlobalReg_addr :: Platform -> GlobalReg -> CmmExpr Source #
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.
addToMem :: CmmType -> CmmExpr -> Int -> CmmAGraph Source #
addToMem rep ptr n
adds n
to the integer pointed-to by ptr
.
addToMemE :: CmmType -> CmmExpr -> CmmExpr -> CmmAGraph Source #
addToMemE rep ptr n
adds n
to the integer pointed-to by ptr
.
:: MemoryOrdering | |
-> LocalReg | result register |
-> CmmExpr | address |
-> FCode () |
:: MemoryOrdering | |
-> CmmExpr | address |
-> CmmExpr | value |
-> FCode () |
Update remembered set operations
whenUpdRemSetEnabled :: FCode a -> FCode () Source #
Emit code to add an entry to a now-overwritten pointer to the update remembered set.
convertInfoProvMap :: StgToCmmConfig -> Module -> InfoTableProvMap -> IPEStats -> [CmmInfoTable] -> (IPEStats, [InfoProvEnt]) Source #
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 Source #
A bare bones InfoProvEnt for things which don't have a good source location
IPEStats | |
|
closureIpeStats :: Int -> IPEStats Source #