CmmStackLayout

ghc-7.0.4: The GHC API

CmmStackLayout

Synopsis

- type SlotEnv = BlockEnv SubAreaSet
- liveSlotAnal :: LGraph Middle Last -> FuelMonad SlotEnv
- liveSlotTransfers :: BackwardTransfers Middle Last SubAreaSet
- removeLiveSlotDefs :: (DefinerOfSlots s, UserOfSlots s) => SubAreaSet -> s -> SubAreaSet
- layout :: ProcPointSet -> SlotEnv -> ByteOff -> LGraph Middle Last -> AreaMap
- manifestSP :: AreaMap -> ByteOff -> LGraph Middle Last -> FuelMonad (LGraph Middle Last)
- igraph :: Ord x => IGraphBuilder x -> SlotEnv -> LGraph Middle Last -> IGraph x
- areaBuilder :: IGraphBuilder Area
- stubSlotsOnDeath :: LGraph Middle Last -> FuelMonad (LGraph Middle Last)

# Documentation

type SlotEnv = BlockEnv SubAreaSet

liveSlotAnal :: LGraph Middle Last -> FuelMonad SlotEnv

liveSlotTransfers :: BackwardTransfers Middle Last SubAreaSet

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

layout :: ProcPointSet -> SlotEnv -> ByteOff -> LGraph Middle Last -> 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 :: AreaMap -> ByteOff -> LGraph Middle Last -> FuelMonad (LGraph Middle Last)

igraph :: Ord x => IGraphBuilder x -> SlotEnv -> LGraph Middle Last -> IGraph x

areaBuilder :: IGraphBuilder Area

stubSlotsOnDeath :: LGraph Middle Last -> FuelMonad (LGraph Middle Last)