nir/nirslots

Source   Edit  

Management of slots. Similar to "register allocation" in lower level languages.

Types

SlotKind = enum
  Temp, Perm
Source   Edit  
SlotManager = object
Source   Edit  
SlotManagerFlag = enum
  ReuseTemps, ReuseVars
Source   Edit  

Procs

proc allocTemp(m: var SlotManager; t: TypeId; symIdgen: var int32): SymId {.
    inline, ...raises: [KeyError], tags: [], forbids: [].}
Source   Edit  
proc allocVar(m: var SlotManager; t: TypeId; symIdgen: var int32): SymId {.
    inline, ...raises: [KeyError], tags: [], forbids: [].}
Source   Edit  
proc closeScope(m: var SlotManager) {....raises: [], tags: [], forbids: [].}
Source   Edit  
proc freeLoc(m: var SlotManager; s: SymId) {....raises: [], tags: [], forbids: [].}
Source   Edit  
proc freeTemp(m: var SlotManager; s: SymId) {....raises: [], tags: [], forbids: [].}
Source   Edit  
proc getType(m: SlotManager; s: SymId): TypeId {.inline, ...raises: [KeyError],
    tags: [], forbids: [].}
Source   Edit  
proc initSlotManager(flags: set[SlotManagerFlag]): SlotManager {.inline,
    ...raises: [], tags: [], forbids: [].}
Source   Edit  
proc openScope(m: var SlotManager) {....raises: [], tags: [], forbids: [].}
Source   Edit  

Iterators

iterator stillAlive(m: SlotManager): (SymId, TypeId) {....raises: [], tags: [],
    forbids: [].}
Source   Edit