CmmStackLayout
- 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
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
areaBuilder :: IGraphBuilder Area
stubSlotsOnDeath :: CmmGraph -> FuelUniqSM CmmGraph
Sanity check: stub pointers immediately after they die