ghc-6.10.4: The GHC API
Contents
Index
CmmExpr
Synopsis
data
CmmExpr
=
CmmLit
CmmLit
|
CmmLoad
CmmExpr
MachRep
|
CmmReg
CmmReg
|
CmmMachOp
MachOp
[
CmmExpr
]
|
CmmRegOff
CmmReg
Int
|
CmmStackSlot
Area
Int
cmmExprRep
::
CmmExpr
->
MachRep
maybeInvertCmmExpr
::
CmmExpr
->
Maybe
CmmExpr
data
CmmReg
=
CmmLocal
LocalReg
|
CmmGlobal
GlobalReg
cmmRegRep
::
CmmReg
->
MachRep
data
CmmLit
=
CmmInt
Integer
MachRep
|
CmmFloat
Rational
MachRep
|
CmmLabel
CLabel
|
CmmLabelOff
CLabel
Int
|
CmmLabelDiffOff
CLabel
CLabel
Int
cmmLitRep
::
CmmLit
->
MachRep
data
LocalReg
=
LocalReg
!
Unique
MachRep
GCKind
localRegRep
::
LocalReg
->
MachRep
localRegGCFollow
::
LocalReg
->
GCKind
data
GCKind
=
GCKindPtr
|
GCKindNonPtr
data
GlobalReg
=
VanillaReg
!
Int
|
FloatReg
!
Int
|
DoubleReg
!
Int
|
LongReg
!
Int
|
Sp
|
SpLim
|
Hp
|
HpLim
|
CurrentTSO
|
CurrentNursery
|
HpAlloc
|
GCEnter1
|
GCFun
|
BaseReg
|
PicBaseReg
globalRegRep
::
GlobalReg
->
MachRep
spReg
::
CmmReg
hpReg
::
CmmReg
spLimReg
::
CmmReg
nodeReg
::
CmmReg
node
::
GlobalReg
class
DefinerOfLocalRegs
a
where
foldRegsDefd
:: (b ->
LocalReg
-> b) -> b -> a -> b
class
UserOfLocalRegs
a
where
foldRegsUsed
:: (b ->
LocalReg
-> b) -> b -> a -> b
filterRegsUsed
::
UserOfLocalRegs
e => (
LocalReg
->
Bool
) -> e ->
RegSet
type
RegSet
=
UniqSet
LocalReg
emptyRegSet
::
RegSet
elemRegSet
::
LocalReg
->
RegSet
->
Bool
extendRegSet
::
RegSet
->
LocalReg
->
RegSet
deleteFromRegSet
::
RegSet
->
LocalReg
->
RegSet
mkRegSet
:: [
LocalReg
] ->
RegSet
plusRegSet
::
RegSet
->
RegSet
->
RegSet
minusRegSet
::
RegSet
->
RegSet
->
RegSet
timesRegSet
::
RegSet
->
RegSet
->
RegSet
data
Area
=
RegSlot
LocalReg
|
CallArea
BlockId
Int
Int
type
StackSlotMap
=
FiniteMap
LocalReg
CmmExpr
getSlot
::
StackSlotMap
->
LocalReg
-> (
StackSlotMap
,
CmmExpr
)
mkCallArea
::
BlockId
-> [a] ->
Maybe
[b] ->
Area
outgoingSlot
::
Area
->
CmmExpr
areaId
::
Area
->
BlockId
areaSize
::
Area
->
Int
narrowU
::
MachRep
->
Integer
->
Integer
narrowS
::
MachRep
->
Integer
->
Integer
Documentation
data
CmmExpr
Constructors
CmmLit
CmmLit
CmmLoad
CmmExpr
MachRep
CmmReg
CmmReg
CmmMachOp
MachOp
[
CmmExpr
]
CmmRegOff
CmmReg
Int
CmmStackSlot
Area
Int
Instances
Eq
CmmExpr
Outputable
CmmExpr
UserOfLocalRegs
CmmExpr
cmmExprRep
::
CmmExpr
->
MachRep
maybeInvertCmmExpr
::
CmmExpr
->
Maybe
CmmExpr
data
CmmReg
Constructors
CmmLocal
LocalReg
CmmGlobal
GlobalReg
Instances
Eq
CmmReg
Ord
CmmReg
Outputable
CmmReg
DefinerOfLocalRegs
CmmReg
UserOfLocalRegs
CmmReg
cmmRegRep
::
CmmReg
->
MachRep
data
CmmLit
Constructors
CmmInt
Integer
MachRep
CmmFloat
Rational
MachRep
CmmLabel
CLabel
CmmLabelOff
CLabel
Int
CmmLabelDiffOff
CLabel
CLabel
Int
Instances
Eq
CmmLit
Outputable
CmmLit
cmmLitRep
::
CmmLit
->
MachRep
data
LocalReg
Constructors
LocalReg
!
Unique
MachRep
GCKind
Parameters: 1. Identifier 2. Type 3. Should the GC follow as a pointer
Instances
Eq
LocalReg
Ord
LocalReg
Outputable
LocalReg
Uniquable
LocalReg
DefinerOfLocalRegs
LocalReg
UserOfLocalRegs
LocalReg
localRegRep
::
LocalReg
->
MachRep
localRegGCFollow
::
LocalReg
->
GCKind
data
GCKind
Whether a
LocalReg
is a GC followable pointer
Constructors
GCKindPtr
GCKindNonPtr
Instances
Eq
GCKind
data
GlobalReg
Constructors
VanillaReg
!
Int
FloatReg
!
Int
DoubleReg
!
Int
LongReg
!
Int
Sp
SpLim
Hp
HpLim
CurrentTSO
CurrentNursery
HpAlloc
GCEnter1
GCFun
BaseReg
PicBaseReg
Instances
Eq
GlobalReg
Ord
GlobalReg
Show
GlobalReg
Outputable
GlobalReg
globalRegRep
::
GlobalReg
->
MachRep
spReg
::
CmmReg
hpReg
::
CmmReg
spLimReg
::
CmmReg
nodeReg
::
CmmReg
node
::
GlobalReg
class
DefinerOfLocalRegs
a
where
Methods
foldRegsDefd
:: (b ->
LocalReg
-> b) -> b -> a -> b
Instances
DefinerOfLocalRegs
LocalReg
DefinerOfLocalRegs
CmmReg
DefinerOfLocalRegs
Last
DefinerOfLocalRegs
Middle
DefinerOfLocalRegs
a =>
DefinerOfLocalRegs
([] a)
DefinerOfLocalRegs
a =>
DefinerOfLocalRegs
(
CmmKinded
a)
class
UserOfLocalRegs
a
where
Methods
foldRegsUsed
:: (b ->
LocalReg
-> b) -> b -> a -> b
Instances
UserOfLocalRegs
RegSet
UserOfLocalRegs
LocalReg
UserOfLocalRegs
CmmReg
UserOfLocalRegs
CmmExpr
UserOfLocalRegs
CmmCallTarget
UserOfLocalRegs
CmmStmt
UserOfLocalRegs
Last
UserOfLocalRegs
Middle
UserOfLocalRegs
a =>
UserOfLocalRegs
([] a)
UserOfLocalRegs
a =>
UserOfLocalRegs
(
ZLast
a)
UserOfLocalRegs
a =>
UserOfLocalRegs
(
CmmKinded
a)
UserOfLocalRegs
i =>
UserOfLocalRegs
(
GenBasicBlock
i)
UserOfLocalRegs
m =>
UserOfLocalRegs
(
ExtendWithSpills
m)
filterRegsUsed
::
UserOfLocalRegs
e => (
LocalReg
->
Bool
) -> e ->
RegSet
type
RegSet
=
UniqSet
LocalReg
emptyRegSet
::
RegSet
elemRegSet
::
LocalReg
->
RegSet
->
Bool
extendRegSet
::
RegSet
->
LocalReg
->
RegSet
deleteFromRegSet
::
RegSet
->
LocalReg
->
RegSet
mkRegSet
:: [
LocalReg
] ->
RegSet
plusRegSet
::
RegSet
->
RegSet
->
RegSet
minusRegSet
::
RegSet
->
RegSet
->
RegSet
timesRegSet
::
RegSet
->
RegSet
->
RegSet
data
Area
A stack area is either the stack slot where a variable is spilled or the stack space where function arguments and results are passed.
Constructors
RegSlot
LocalReg
CallArea
BlockId
Int
Int
Instances
Eq
Area
Ord
Area
Outputable
Area
type
StackSlotMap
=
FiniteMap
LocalReg
CmmExpr
getSlot
::
StackSlotMap
->
LocalReg
-> (
StackSlotMap
,
CmmExpr
)
mkCallArea
::
BlockId
-> [a] ->
Maybe
[b] ->
Area
outgoingSlot
::
Area
->
CmmExpr
areaId
::
Area
->
BlockId
areaSize
::
Area
->
Int
narrowU
::
MachRep
->
Integer
->
Integer
narrowS
::
MachRep
->
Integer
->
Integer
Produced by
Haddock
version 2.4.2