1 {-# GHC_PRAGMA INTERFACE VERSION 5 #-}
2 interface AbsCSyn where
3 import AbsCFuns(amodeCanSurviveGC, flattenAbsC, getAmodeKind, kindFromMagicId, mixedPtrLocn, mixedTypeLocn, mkAbsCStmtList, mkAbsCStmts, mkAbstractCs, mkAlgAltsCSwitch, nonemptyAbsC)
4 import BasicLit(BasicLit(..), mkMachInt, mkMachWord)
5 import CLabelInfo(CLabel)
7 import ClosureInfo(ClosureInfo, LambdaFormInfo)
8 import CmdLineOpts(GlobalSwitch, SimplifierSwitch)
9 import CostCentre(CostCentre)
10 import HeapOffs(HeapOffset, HpRelOffset(..), SpARelOffset(..), SpBRelOffset(..), VirtualHeapOffset(..), VirtualSpAOffset(..), VirtualSpBOffset(..), addOff, fixedHdrSize, intOff, intOffsetIntoGoods, isZeroOff, maxOff, possiblyEqualHeapOffset, pprHeapOffset, subOff, totHdrSize, varHdrSize, zeroOff)
11 import Id(ConTag(..), Id)
13 import Outputable(ExportFlag, NamedThing(..), Outputable(..))
14 import PprAbsC(dumpRealC, writeRealC)
15 import PreludePS(_PackedString)
16 import PreludeRatio(Ratio(..))
17 import Pretty(PprStyle, Pretty(..), PrettyRep)
18 import PrimKind(PrimKind(..))
19 import PrimOps(PrimOp)
21 import SplitUniq(SplitUniqSupply)
24 import StgSyn(StgAtom, StgExpr, UpdateFlag)
26 import UniType(UniType)
28 import UniqSet(UniqSet(..))
30 import Unpretty(Unpretty(..))
31 class NamedThing a where
32 getExportFlag :: a -> ExportFlag
33 isLocallyDefined :: a -> Bool
34 getOrigName :: a -> (_PackedString, _PackedString)
35 getOccurrenceName :: a -> _PackedString
36 getInformingModules :: a -> [_PackedString]
37 getSrcLoc :: a -> SrcLoc
38 getTheUnique :: a -> Unique
40 getType :: a -> UniType
41 fromPreludeCore :: a -> Bool
42 class Outputable a where
43 ppr :: PprStyle -> a -> Int -> Bool -> PrettyRep
44 data AbstractC = AbsCNop | AbsCStmts AbstractC AbstractC | CAssign CAddrMode CAddrMode | CJump CAddrMode | CFallThrough CAddrMode | CReturn CAddrMode ReturnInfo | CSwitch CAddrMode [(BasicLit, AbstractC)] AbstractC | CCodeBlock CLabel AbstractC | CInitHdr ClosureInfo RegRelative CAddrMode Bool | COpStmt [CAddrMode] PrimOp [CAddrMode] Int [MagicId] | CSimultaneous AbstractC | CMacroStmt CStmtMacro [CAddrMode] | CCallProfCtrMacro _PackedString [CAddrMode] | CCallProfCCMacro _PackedString [CAddrMode] | CStaticClosure CLabel ClosureInfo CAddrMode [CAddrMode] | CClosureInfoAndCode ClosureInfo AbstractC (Labda AbstractC) CAddrMode [Char] Int | CRetVector CLabel [Labda CAddrMode] AbstractC | CRetUnVector CLabel CAddrMode | CFlatRetVector CLabel [CAddrMode] | CCostCentreDecl Bool CostCentre | CClosureUpdInfo AbstractC | CSplitMarker
45 data BasicLit = MachChar Char | MachStr _PackedString | MachAddr Integer | MachInt Integer Bool | MachFloat (Ratio Integer) | MachDouble (Ratio Integer) | MachLitLit _PackedString PrimKind | NoRepStr _PackedString | NoRepInteger Integer | NoRepRational (Ratio Integer)
46 data CAddrMode = CVal RegRelative PrimKind | CAddr RegRelative | CReg MagicId | CTableEntry CAddrMode CAddrMode PrimKind | CTemp Unique PrimKind | CLbl CLabel PrimKind | CUnVecLbl CLabel CLabel | CCharLike CAddrMode | CIntLike CAddrMode | CString _PackedString | CLit BasicLit | CLitLit _PackedString PrimKind | COffset HeapOffset | CCode AbstractC | CLabelledCode CLabel AbstractC | CJoinPoint Int Int | CMacroExpr PrimKind CExprMacro [CAddrMode] | CCostCentre CostCentre Bool
47 data CExprMacro = INFO_PTR | ENTRY_CODE | INFO_TAG | EVAL_TAG
50 data CStmtMacro = ARGS_CHK_A_LOAD_NODE | ARGS_CHK_A | ARGS_CHK_B_LOAD_NODE | ARGS_CHK_B | HEAP_CHK | STK_CHK | UPD_CAF | UPD_IND | UPD_INPLACE_NOPTRS | UPD_INPLACE_PTRS | UPD_BH_UPDATABLE | UPD_BH_SINGLE_ENTRY | PUSH_STD_UPD_FRAME | POP_STD_UPD_FRAME | SET_ARITY | CHK_ARITY | SET_TAG
57 type HpRelOffset = HeapOffset
58 data MagicId = BaseReg | StkOReg | VanillaReg PrimKind Int# | FloatReg Int# | DoubleReg Int# | TagReg | RetReg | SpA | SuA | SpB | SuB | Hp | HpLim | LivenessReg | ActivityReg | StdUpdRetVecReg | StkStubReg | CurCostCentre | VoidReg
59 data RegRelative = HpRel HeapOffset HeapOffset | SpARel Int Int | SpBRel Int Int | NodeRel HeapOffset
60 data ReturnInfo = DirectReturn | StaticVectoredReturn Int | DynamicVectoredReturn CAddrMode
61 type SpARelOffset = Int
62 type SpBRelOffset = Int
63 type VirtualHeapOffset = HeapOffset
64 type VirtualSpAOffset = Int
65 type VirtualSpBOffset = Int
71 type Pretty = Int -> Bool -> PrettyRep
73 data PrimKind = PtrKind | CodePtrKind | DataPtrKind | RetKind | InfoPtrKind | CostCentreKind | CharKind | IntKind | WordKind | AddrKind | FloatKind | DoubleKind | MallocPtrKind | StablePtrKind | ArrayKind | ByteArrayKind | VoidKind
84 type UniqSet a = UniqFM a
87 amodeCanSurviveGC :: CAddrMode -> Bool
88 flattenAbsC :: SplitUniqSupply -> AbstractC -> AbstractC
89 getAmodeKind :: CAddrMode -> PrimKind
90 kindFromMagicId :: MagicId -> PrimKind
91 mixedPtrLocn :: CAddrMode -> Bool
92 mixedTypeLocn :: CAddrMode -> Bool
93 mkAbsCStmtList :: AbstractC -> [AbstractC]
94 mkAbsCStmts :: AbstractC -> AbstractC -> AbstractC
95 mkAbstractCs :: [AbstractC] -> AbstractC
96 mkAlgAltsCSwitch :: CAddrMode -> [(Int, AbstractC)] -> AbstractC -> AbstractC
97 nonemptyAbsC :: AbstractC -> Labda AbstractC
98 mkMachInt :: Integer -> BasicLit
99 mkMachWord :: Integer -> BasicLit
100 addOff :: HeapOffset -> HeapOffset -> HeapOffset
101 fixedHdrSize :: HeapOffset
102 dumpRealC :: (GlobalSwitch -> Bool) -> AbstractC -> [Char]
104 intOff :: Int -> HeapOffset
105 intOffsetIntoGoods :: HeapOffset -> Labda Int
106 isVolatileReg :: MagicId -> Bool
107 isZeroOff :: HeapOffset -> Bool
108 maxOff :: HeapOffset -> HeapOffset -> HeapOffset
109 mkCCostCentre :: CostCentre -> CAddrMode
110 mkIntCLit :: Int -> CAddrMode
112 possiblyEqualHeapOffset :: HeapOffset -> HeapOffset -> Bool
113 pprHeapOffset :: PprStyle -> HeapOffset -> CSeq
114 subOff :: HeapOffset -> HeapOffset -> HeapOffset
115 totHdrSize :: SMRep -> HeapOffset
116 varHdrSize :: SMRep -> HeapOffset
117 zeroOff :: HeapOffset
118 writeRealC :: (GlobalSwitch -> Bool) -> _FILE -> AbstractC -> _State _RealWorld -> ((), _State _RealWorld)
122 instance Eq GlobalSwitch
123 instance Eq SimplifierSwitch
128 instance Ord BasicLit
130 instance Ord GlobalSwitch
131 instance Ord SimplifierSwitch
133 instance Ord PrimKind
135 instance NamedThing Id
136 instance (Outputable a, Outputable b) => Outputable (a, b)
137 instance (Outputable a, Outputable b, Outputable c) => Outputable (a, b, c)
138 instance Outputable BasicLit
139 instance Outputable Bool
140 instance Outputable Id
141 instance Outputable PrimKind
142 instance Outputable PrimOp
143 instance Outputable a => Outputable (StgAtom a)
144 instance (Outputable a, Outputable b, Ord b) => Outputable (StgExpr a b)
145 instance Outputable a => Outputable [a]
146 instance Text CExprMacro
147 instance Text CStmtMacro