RegAlloc.Graph.SpillCost
- type SpillCostRecord = (VirtualReg, Int, Int, Int)
- plusSpillCostRecord :: SpillCostRecord -> SpillCostRecord -> SpillCostRecord
- pprSpillCostRecord :: (VirtualReg -> RegClass) -> (Reg -> SDoc) -> Graph VirtualReg RegClass RealReg -> SpillCostRecord -> SDoc
- type SpillCostInfo = UniqFM SpillCostRecord
- zeroSpillCostInfo :: SpillCostInfo
- plusSpillCostInfo :: SpillCostInfo -> SpillCostInfo -> SpillCostInfo
- slurpSpillCostInfo :: (PlatformOutputable instr, Instruction instr) => Platform -> LiveCmmTop statics instr -> SpillCostInfo
- chooseSpill :: SpillCostInfo -> Graph VirtualReg RegClass RealReg -> VirtualReg
- lifeMapFromSpillCostInfo :: SpillCostInfo -> UniqFM (VirtualReg, Int)
Documentation
type SpillCostRecord = (VirtualReg, Int, Int, Int)
pprSpillCostRecord :: (VirtualReg -> RegClass) -> (Reg -> SDoc) -> Graph VirtualReg RegClass RealReg -> SpillCostRecord -> SDoc
Show a spill cost record, including the degree from the graph and final calulated spill cos
type SpillCostInfo = UniqFM SpillCostRecord
plusSpillCostInfo :: SpillCostInfo -> SpillCostInfo -> SpillCostInfo
Add two spillCostInfos
slurpSpillCostInfo :: (PlatformOutputable instr, Instruction instr) => Platform -> LiveCmmTop statics instr -> SpillCostInfo
Slurp out information used for determining spill costs for each vreg, the number of times it was written to, read from, and the number of instructions it was live on entry to (lifetime)
chooseSpill :: SpillCostInfo -> Graph VirtualReg RegClass RealReg -> VirtualReg
Choose a node to spill from this graph