- 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 SubAreaSetSource
removeLiveSlotDefs :: (DefinerOfSlots s, UserOfSlots s) => SubAreaSet -> s -> SubAreaSetSource
getSpEntryMap :: Int -> CmmGraph -> SpEntryMapSource
layout :: ProcPointSet -> SpEntryMap -> SlotEnv -> ByteOff -> CmmGraph -> AreaMapSource
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 CmmGraphSource
areaBuilder :: IGraphBuilder AreaSource
stubSlotsOnDeath :: CmmGraph -> FuelUniqSM CmmGraphSource
Sanity check: stub pointers immediately after they die