ghc-8.0.0.20160111: The GHC API

Safe HaskellNone
LanguageHaskell2010

RegAlloc.Linear.State

Description

State monad for the linear register allocator.

Synopsis

Documentation

data RA_State freeRegs

The register allocator state

Constructors

RA_State 

Fields

data RegM freeRegs a

The register allocator monad type.

Instances

Monad (RegM freeRegs) 

Methods

(>>=) :: RegM freeRegs a -> (a -> RegM freeRegs b) -> RegM freeRegs b Source

(>>) :: RegM freeRegs a -> RegM freeRegs b -> RegM freeRegs b Source

return :: a -> RegM freeRegs a Source

fail :: String -> RegM freeRegs a Source

Functor (RegM freeRegs) 

Methods

fmap :: (a -> b) -> RegM freeRegs a -> RegM freeRegs b Source

(<$) :: a -> RegM freeRegs b -> RegM freeRegs a Source

Applicative (RegM freeRegs) 

Methods

pure :: a -> RegM freeRegs a Source

(<*>) :: RegM freeRegs (a -> b) -> RegM freeRegs a -> RegM freeRegs b Source

(*>) :: RegM freeRegs a -> RegM freeRegs b -> RegM freeRegs b Source

(<*) :: RegM freeRegs a -> RegM freeRegs b -> RegM freeRegs a Source

HasDynFlags (RegM a) 

runR :: DynFlags -> BlockAssignment freeRegs -> freeRegs -> RegMap Loc -> StackMap -> UniqSupply -> RegM freeRegs a -> (BlockAssignment freeRegs, StackMap, RegAllocStats, a)

Run a computation in the RegM register allocator monad.

spillR :: Instruction instr => Reg -> Unique -> RegM freeRegs (instr, Int)

loadR :: Instruction instr => Reg -> Int -> RegM freeRegs instr

getFreeRegsR :: RegM freeRegs freeRegs

setFreeRegsR :: freeRegs -> RegM freeRegs ()

getAssigR :: RegM freeRegs (RegMap Loc)

setAssigR :: RegMap Loc -> RegM freeRegs ()

getBlockAssigR :: RegM freeRegs (BlockAssignment freeRegs)

setBlockAssigR :: BlockAssignment freeRegs -> RegM freeRegs ()

setDeltaR :: Int -> RegM freeRegs ()

getDeltaR :: RegM freeRegs Int

getUniqueR :: RegM freeRegs Unique

recordSpill :: SpillReason -> RegM freeRegs ()

Record that a spill instruction was inserted, for profiling.