1 {-# GHC_PRAGMA INTERFACE VERSION 5 #-}
2 interface CgMonad where
3 import AbsCSyn(AbstractC, CAddrMode, CExprMacro, CStmtMacro, MagicId, RegRelative, ReturnInfo)
4 import BasicLit(BasicLit)
5 import CLabelInfo(CLabel)
6 import CgBindery(CgBindings(..), CgIdInfo, StableLoc, VolatileLoc, heapIdInfo, stableAmodeIdInfo)
7 import ClosureInfo(ClosureInfo, LambdaFormInfo)
8 import CmdLineOpts(GlobalSwitch)
9 import CostCentre(CostCentre, IsCafCC)
10 import HeapOffs(HeapOffset, VirtualHeapOffset(..), VirtualSpAOffset(..), VirtualSpBOffset(..))
11 import Id(DataCon(..), Id)
12 import IdEnv(IdEnv(..))
14 import Outputable(NamedThing, Outputable)
15 import PreludePS(_PackedString)
16 import PrimKind(PrimKind)
17 import PrimOps(PrimOp)
18 import StgSyn(PlainStgLiveVars(..))
20 import UniqSet(UniqSet(..))
24 type AStackUsage = (Int, [(Int, StubFlag)], Int, Int)
26 type BStackUsage = (Int, [Int], Int, Int)
29 type CgBindings = UniqFM CgIdInfo
31 data CgInfoDownwards = MkCgInfoDown CompilationInfo (UniqFM CgIdInfo) EndOfBlockInfo
32 data CgState = MkCgState AbstractC (UniqFM CgIdInfo) ((Int, [(Int, StubFlag)], Int, Int), (Int, [Int], Int, Int), (HeapOffset, HeapOffset))
33 type Code = CgInfoDownwards -> CgState -> CgState
34 data CompilationInfo = MkCompInfo (GlobalSwitch -> Bool) ((Int -> GlobalSwitch) -> Labda Int) _PackedString
36 data EndOfBlockInfo = EndOfBlockInfo Int Int Sequel
37 type FCode a = CgInfoDownwards -> CgState -> (a, CgState)
40 type HeapUsage = (HeapOffset, HeapOffset)
41 type IntSwitchChecker = (Int -> GlobalSwitch) -> Labda Int
44 type SemiTaggingStuff = Labda ([(Int, (AbstractC, CLabel))], Labda (Labda Id, (AbstractC, CLabel)))
45 data Sequel = InRetReg | OnStack Int | UpdateCode CAddrMode | CaseAlts CAddrMode (Labda ([(Int, (AbstractC, CLabel))], Labda (Labda Id, (AbstractC, CLabel))))
47 type VirtualHeapOffset = HeapOffset
48 type VirtualSpAOffset = Int
49 type VirtualSpBOffset = Int
52 type IdEnv a = UniqFM a
54 type PlainStgLiveVars = UniqFM Id
56 type UniqSet a = UniqFM a
58 absC :: AbstractC -> CgInfoDownwards -> CgState -> CgState
59 addBindC :: Id -> CgIdInfo -> CgInfoDownwards -> CgState -> CgState
60 addBindsC :: [(Id, CgIdInfo)] -> CgInfoDownwards -> CgState -> CgState
61 addFreeBSlots :: [Int] -> [Int] -> [Int]
62 costCentresC :: _PackedString -> [CAddrMode] -> CgInfoDownwards -> CgState -> CgState
63 costCentresFlag :: CgInfoDownwards -> CgState -> (Bool, CgState)
64 fixC :: (a -> CgInfoDownwards -> CgState -> (a, CgState)) -> CgInfoDownwards -> CgState -> (a, CgState)
65 forkAbsC :: (CgInfoDownwards -> CgState -> CgState) -> CgInfoDownwards -> CgState -> (AbstractC, CgState)
66 forkAlts :: [CgInfoDownwards -> CgState -> (a, CgState)] -> [CgInfoDownwards -> CgState -> (a, CgState)] -> (CgInfoDownwards -> CgState -> (b, CgState)) -> CgInfoDownwards -> CgState -> (([a], b), CgState)
67 forkClosureBody :: (CgInfoDownwards -> CgState -> CgState) -> CgInfoDownwards -> CgState -> CgState
68 forkEval :: EndOfBlockInfo -> (CgInfoDownwards -> CgState -> CgState) -> (CgInfoDownwards -> CgState -> (Sequel, CgState)) -> CgInfoDownwards -> CgState -> (EndOfBlockInfo, CgState)
69 forkEvalHelp :: EndOfBlockInfo -> (CgInfoDownwards -> CgState -> CgState) -> (CgInfoDownwards -> CgState -> (a, CgState)) -> CgInfoDownwards -> CgState -> ((Int, Int, a), CgState)
70 forkStatics :: (CgInfoDownwards -> CgState -> (a, CgState)) -> CgInfoDownwards -> CgState -> (a, CgState)
71 getAbsC :: (CgInfoDownwards -> CgState -> CgState) -> CgInfoDownwards -> CgState -> (AbstractC, CgState)
72 getEndOfBlockInfo :: CgInfoDownwards -> CgState -> (EndOfBlockInfo, CgState)
73 getIntSwitchChkrC :: CgInfoDownwards -> CgState -> ((Int -> GlobalSwitch) -> Labda Int, CgState)
74 getUnstubbedAStackSlots :: Int -> CgInfoDownwards -> CgState -> ([Int], CgState)
75 heapIdInfo :: Id -> HeapOffset -> LambdaFormInfo -> CgIdInfo
76 initC :: CompilationInfo -> (CgInfoDownwards -> CgState -> CgState) -> AbstractC
77 isStringSwitchSetC :: ([Char] -> GlobalSwitch) -> CgInfoDownwards -> CgState -> (Bool, CgState)
78 isStubbed :: StubFlag -> Bool
79 isSwitchSetC :: GlobalSwitch -> CgInfoDownwards -> CgState -> (Bool, CgState)
80 listCs :: [CgInfoDownwards -> CgState -> CgState] -> CgInfoDownwards -> CgState -> CgState
81 listFCs :: [CgInfoDownwards -> CgState -> (a, CgState)] -> CgInfoDownwards -> CgState -> ([a], CgState)
82 lookupBindC :: Id -> CgInfoDownwards -> CgState -> (CgIdInfo, CgState)
83 mapCs :: (a -> CgInfoDownwards -> CgState -> CgState) -> [a] -> CgInfoDownwards -> CgState -> CgState
84 mapFCs :: (a -> CgInfoDownwards -> CgState -> (b, CgState)) -> [a] -> CgInfoDownwards -> CgState -> ([b], CgState)
85 modifyBindC :: Id -> (CgIdInfo -> CgIdInfo) -> CgInfoDownwards -> CgState -> CgState
86 moduleName :: CgInfoDownwards -> CgState -> (_PackedString, CgState)
87 noBlackHolingFlag :: CgInfoDownwards -> CgState -> (Bool, CgState)
88 nopC :: CgInfoDownwards -> CgState -> CgState
89 nukeDeadBindings :: UniqFM Id -> CgInfoDownwards -> CgState -> CgState
90 profCtrC :: _PackedString -> [CAddrMode] -> CgInfoDownwards -> CgState -> CgState
91 returnFC :: a -> CgInfoDownwards -> CgState -> (a, CgState)
92 sequelToAmode :: Sequel -> CgInfoDownwards -> CgState -> (CAddrMode, CgState)
93 setEndOfBlockInfo :: EndOfBlockInfo -> (CgInfoDownwards -> CgState -> CgState) -> CgInfoDownwards -> CgState -> CgState
94 stableAmodeIdInfo :: Id -> CAddrMode -> LambdaFormInfo -> CgIdInfo
95 thenC :: (CgInfoDownwards -> CgState -> CgState) -> (CgInfoDownwards -> CgState -> a) -> CgInfoDownwards -> CgState -> a
96 thenFC :: (CgInfoDownwards -> CgState -> (a, CgState)) -> (a -> CgInfoDownwards -> CgState -> b) -> CgInfoDownwards -> CgState -> b
98 instance Eq GlobalSwitch
102 instance Ord GlobalSwitch
105 instance NamedThing Id
106 instance Outputable Id