ghc-7.4.2: The GHC API

Safe Haskell | None

CmmStackLayout

Synopsis

- type SlotEnv = BlockEnv SubAreaSet
- liveSlotAnal :: CmmGraph -> FuelUniqSM SlotEnv
- liveSlotTransfers :: BwdTransfer CmmNode SubAreaSet
- removeLiveSlotDefs :: (DefinerOfSlots s, UserOfSlots s) => SubAreaSet -> s -> SubAreaSet
- getSpEntryMap :: Int -> CmmGraph -> SpEntryMap
- layout :: ProcPointSet -> SpEntryMap -> SlotEnv -> ByteOff -> CmmGraph -> AreaMap
- manifestSP :: SpEntryMap -> AreaMap -> ByteOff -> CmmGraph -> FuelUniqSM CmmGraph
- igraph :: Ord x => IGraphBuilder x -> SlotEnv -> CmmGraph -> IGraph x
- areaBuilder :: IGraphBuilder Area
- stubSlotsOnDeath :: CmmGraph -> FuelUniqSM CmmGraph

# Documentation

type SlotEnv = BlockEnv SubAreaSet

liveSlotAnal :: CmmGraph -> FuelUniqSM SlotEnv

liveSlotTransfers :: BwdTransfer CmmNode SubAreaSet

removeLiveSlotDefs :: (DefinerOfSlots s, UserOfSlots s) => SubAreaSet -> s -> SubAreaSet

getSpEntryMap :: Int -> CmmGraph -> SpEntryMap

layout :: ProcPointSet -> SpEntryMap -> SlotEnv -> ByteOff -> CmmGraph -> AreaMap

Greedy stack layout. Compute liveness, build the interference graph, and allocate slots for the areas. We visit each basic block in a (generally) forward order.

manifestSP :: SpEntryMap -> AreaMap -> ByteOff -> CmmGraph -> FuelUniqSM CmmGraph

igraph :: Ord x => IGraphBuilder x -> SlotEnv -> CmmGraph -> IGraph x

areaBuilder :: IGraphBuilder Area

stubSlotsOnDeath :: CmmGraph -> FuelUniqSM CmmGraph

Sanity check: stub pointers immediately after they die