ghc-9.6.3: The GHC API

Safe Haskell | Safe-Inferred
Language | Haskell2010

GHC.CmmToAsm.Reg.Linear.StackMap

Description

The assignment of virtual registers to stack slots

Synopsis

- type StackSlot = Int
- data StackMap = StackMap {
  - stackMapNextFreeSlot :: !Int
  - stackMapAssignment :: UniqFM Unique StackSlot
  }
- emptyStackMap :: StackMap
- getStackSlotFor :: StackMap -> Unique -> (StackMap, Int)
- getStackUse :: StackMap -> Int

# Documentation

type StackSlot = Int Source #

Identifier for a stack slot.

data StackMap Source #

Constructors

StackMap |

Fields

- stackMapNextFreeSlot :: !Int

  The slots that are still available to be allocated.

- stackMapAssignment :: UniqFM Unique StackSlot

  Assignment of vregs to stack slots.

emptyStackMap :: StackMap Source #

An empty stack map, with all slots available.

getStackSlotFor :: StackMap -> Unique -> (StackMap, Int) Source #

If this vreg unique already has a stack assignment then return the slot number, otherwise allocate a new slot, and update the map.

getStackUse :: StackMap -> Int Source #

Return the number of stack slots that were allocated