[project @ 1996-02-06 14:32:22 by dnt]
[ghc-hetmet.git] / ghc / compiler / absCSyn / AbsCSyn.hi
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)
6 import CharSeq(CSeq)
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)
12 import Maybes(Labda)
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)
20 import SMRep(SMRep)
21 import SplitUniq(SplitUniqSupply)
22 import SrcLoc(SrcLoc)
23 import Stdio(_FILE)
24 import StgSyn(StgAtom, StgExpr, UpdateFlag)
25 import TyCon(TyCon)
26 import UniType(UniType)
27 import UniqFM(UniqFM)
28 import UniqSet(UniqSet(..))
29 import Unique(Unique)
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
39         hasType :: a -> Bool
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
48 data CLabel 
49 data CSeq 
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
51 data ClosureInfo 
52 data LambdaFormInfo 
53 data GlobalSwitch 
54 data SimplifierSwitch 
55 data CostCentre 
56 data HeapOffset 
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
66 type ConTag = Int
67 data Id 
68 data Labda a 
69 data ExportFlag 
70 data PprStyle 
71 type Pretty = Int -> Bool -> PrettyRep
72 data PrettyRep 
73 data PrimKind   = PtrKind | CodePtrKind | DataPtrKind | RetKind | InfoPtrKind | CostCentreKind | CharKind | IntKind | WordKind | AddrKind | FloatKind | DoubleKind | MallocPtrKind | StablePtrKind | ArrayKind | ByteArrayKind | VoidKind
74 data PrimOp 
75 data SMRep 
76 data SplitUniqSupply 
77 data SrcLoc 
78 data StgAtom a 
79 data StgExpr a b 
80 data UpdateFlag 
81 data TyCon 
82 data UniType 
83 data UniqFM a 
84 type UniqSet a = UniqFM a
85 data Unique 
86 type Unpretty = CSeq
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]
103 infoptr :: MagicId
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
111 node :: MagicId
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)
119 instance Eq MagicId
120 instance Eq BasicLit
121 instance Eq CLabel
122 instance Eq GlobalSwitch
123 instance Eq SimplifierSwitch
124 instance Eq Id
125 instance Eq PrimKind
126 instance Eq PrimOp
127 instance Eq Unique
128 instance Ord BasicLit
129 instance Ord CLabel
130 instance Ord GlobalSwitch
131 instance Ord SimplifierSwitch
132 instance Ord Id
133 instance Ord PrimKind
134 instance Ord Unique
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
148 instance Text Unique
149