[project @ 1996-01-08 20:28:12 by partain]
[ghc-hetmet.git] / ghc / compiler / codeGen / CgTailCall.hi
1 {-# GHC_PRAGMA INTERFACE VERSION 5 #-}
2 interface CgTailCall where
3 import AbsCSyn(AbstractC, CAddrMode, CExprMacro, MagicId, RegRelative)
4 import BasicLit(BasicLit)
5 import CLabelInfo(CLabel)
6 import CgBindery(CgIdInfo)
7 import CgMonad(CgInfoDownwards, CgState, CompilationInfo, EndOfBlockInfo, Sequel, StubFlag)
8 import Class(Class)
9 import ClosureInfo(LambdaFormInfo)
10 import CostCentre(CostCentre)
11 import HeapOffs(HeapOffset)
12 import Id(Id, IdDetails)
13 import IdInfo(IdInfo)
14 import Maybes(Labda)
15 import NameTypes(FullName)
16 import PreludePS(_PackedString)
17 import PrimKind(PrimKind)
18 import StgSyn(StgAtom)
19 import TyCon(TyCon)
20 import TyVar(TyVarTemplate)
21 import UniType(UniType)
22 import UniqFM(UniqFM)
23 import Unique(Unique)
24 data CAddrMode  {-# GHC_PRAGMA 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 #-}
25 data CgInfoDownwards    {-# GHC_PRAGMA MkCgInfoDown CompilationInfo (UniqFM CgIdInfo) EndOfBlockInfo #-}
26 data CgState    {-# GHC_PRAGMA MkCgState AbstractC (UniqFM CgIdInfo) ((Int, [(Int, StubFlag)], Int, Int), (Int, [Int], Int, Int), (HeapOffset, HeapOffset)) #-}
27 data HeapOffset 
28 data Id         {-# GHC_PRAGMA Id Unique UniType IdInfo IdDetails #-}
29 data Labda a    {-# GHC_PRAGMA Hamna | Ni a #-}
30 data StgAtom a  {-# GHC_PRAGMA StgVarAtom a | StgLitAtom BasicLit #-}
31 data TyCon      {-# GHC_PRAGMA SynonymTyCon Unique FullName Int [TyVarTemplate] UniType Bool | DataTyCon Unique FullName Int [TyVarTemplate] [Id] [Class] Bool | TupleTyCon Int | PrimTyCon Unique FullName Int ([PrimKind] -> PrimKind) | SpecTyCon TyCon [Labda UniType] #-}
32 cgTailCall :: StgAtom Id -> [StgAtom Id] -> UniqFM Id -> CgInfoDownwards -> CgState -> CgState
33         {-# GHC_PRAGMA _A_ 3 _U_ 12222 _N_ _S_ "SSL" _N_ _N_ #-}
34 mkDynamicAlgReturnCode :: TyCon -> CAddrMode -> Sequel -> CgInfoDownwards -> CgState -> CgState
35         {-# GHC_PRAGMA _A_ 3 _U_ 12222 _N_ _S_ "SLS" _N_ _N_ #-}
36 mkPrimReturnCode :: Sequel -> CgInfoDownwards -> CgState -> CgState
37         {-# GHC_PRAGMA _A_ 3 _U_ 222 _N_ _S_ "SLL" _N_ _N_ #-}
38 mkStaticAlgReturnCode :: Id -> Labda CLabel -> Sequel -> CgInfoDownwards -> CgState -> CgState
39         {-# GHC_PRAGMA _A_ 3 _U_ 21222 _N_ _S_ "LLS" _N_ _N_ #-}
40 performReturn :: AbstractC -> (Sequel -> CgInfoDownwards -> CgState -> CgState) -> UniqFM Id -> CgInfoDownwards -> CgState -> CgState
41         {-# GHC_PRAGMA _A_ 5 _U_ 21221 _N_ _S_ "LSLU(LLU(LLL))L" _N_ _N_ #-}
42 tailCallBusiness :: Id -> CAddrMode -> LambdaFormInfo -> [CAddrMode] -> UniqFM Id -> AbstractC -> CgInfoDownwards -> CgState -> CgState
43         {-# GHC_PRAGMA _A_ 6 _U_ 22222222 _N_ _S_ "LSLLLL" _N_ _N_ #-}
44