[project @ 1996-01-11 14:06:51 by partain]
[ghc-hetmet.git] / ghc / compiler / codeGen / ClosureInfo.hi
1 {-# GHC_PRAGMA INTERFACE VERSION 5 #-}
2 interface ClosureInfo where
3 import AbsCSyn(AbstractC, CAddrMode, CExprMacro, CStmtMacro, MagicId, RegRelative, ReturnInfo)
4 import BasicLit(BasicLit)
5 import CLabelInfo(CLabel)
6 import CgBindery(CgIdInfo)
7 import CgMonad(CgInfoDownwards, CgState, CompilationInfo, EndOfBlockInfo, FCode(..), StubFlag)
8 import CmdLineOpts(GlobalSwitch)
9 import CostCentre(CostCentre)
10 import HeapOffs(HeapOffset)
11 import Id(DataCon(..), Id)
12 import Maybes(Labda)
13 import PreludePS(_PackedString)
14 import PrimKind(PrimKind)
15 import PrimOps(PrimOp)
16 import SMRep(SMRep, SMSpecRepKind, SMUpdateKind, getSMInfoStr, getSMInitHdrStr, getSMUpdInplaceHdrStr, ltSMRepHdr)
17 import StgSyn(PlainStgAtom(..), PlainStgExpr(..), PlainStgLiveVars(..), StgAtom, StgBinderInfo, StgBinding, StgCaseAlternatives, StgExpr, UpdateFlag(..))
18 import TyCon(TyCon)
19 import UniType(UniType)
20 import UniqFM(UniqFM)
21 import UniqSet(UniqSet(..))
22 import Unique(Unique)
23 data AbstractC 
24 data CAddrMode 
25 data MagicId 
26 data CLabel 
27 data CgIdInfo 
28 data CgInfoDownwards 
29 data CgState 
30 data ClosureInfo 
31 data CompilationInfo 
32 data EntryConvention   = ViaNode | StdEntry CLabel (Labda CLabel) | DirectEntry CLabel Int [MagicId]
33 type FCode a = CgInfoDownwards -> CgState -> (a, CgState)
34 data HeapOffset 
35 type DataCon = Id
36 data Id 
37 data Labda a 
38 data LambdaFormInfo 
39 data PrimKind 
40 data SMRep 
41 type PlainStgAtom = StgAtom Id
42 type PlainStgExpr = StgExpr Id Id
43 type PlainStgLiveVars = UniqFM Id
44 data StandardFormInfo 
45 data StgAtom a 
46 data StgBinderInfo 
47 data StgExpr a b 
48 data UpdateFlag   = ReEntrant | Updatable | SingleEntry
49 data TyCon 
50 data UniqFM a 
51 type UniqSet a = UniqFM a
52 allocProfilingMsg :: ClosureInfo -> _PackedString
53 blackHoleClosureInfo :: ClosureInfo -> ClosureInfo
54 blackHoleOnEntry :: Bool -> ClosureInfo -> Bool
55 closureGoodStuffSize :: ClosureInfo -> Int
56 closureHdrSize :: ClosureInfo -> HeapOffset
57 closureId :: ClosureInfo -> Id
58 closureKind :: ClosureInfo -> [Char]
59 closureLFInfo :: ClosureInfo -> LambdaFormInfo
60 closureLabelFromCI :: ClosureInfo -> CLabel
61 closureNonHdrSize :: ClosureInfo -> Int
62 closurePtrsSize :: ClosureInfo -> Int
63 closureReturnsUnboxedType :: ClosureInfo -> Bool
64 closureSMRep :: ClosureInfo -> SMRep
65 closureSemiTag :: ClosureInfo -> Int
66 closureSingleEntry :: ClosureInfo -> Bool
67 closureSize :: ClosureInfo -> HeapOffset
68 closureSizeWithoutFixedHdr :: ClosureInfo -> HeapOffset
69 closureType :: ClosureInfo -> Labda (TyCon, [UniType], [Id])
70 closureTypeDescr :: ClosureInfo -> [Char]
71 closureUpdReqd :: ClosureInfo -> Bool
72 dataConLiveness :: ((Int -> GlobalSwitch) -> Labda Int) -> ClosureInfo -> Int
73 entryLabelFromCI :: ClosureInfo -> CLabel
74 fastLabelFromCI :: ClosureInfo -> CLabel
75 fitsMinUpdSize :: ClosureInfo -> Bool
76 funInfoTableRequired :: Id -> StgBinderInfo -> LambdaFormInfo -> Bool
77 getEntryConvention :: Id -> LambdaFormInfo -> [PrimKind] -> CgInfoDownwards -> CgState -> (EntryConvention, CgState)
78 getSMInfoStr :: SMRep -> [Char]
79 getSMInitHdrStr :: SMRep -> [Char]
80 getSMUpdInplaceHdrStr :: SMRep -> [Char]
81 getStandardFormThunkInfo :: LambdaFormInfo -> Labda [StgAtom Id]
82 infoTableLabelFromCI :: ClosureInfo -> CLabel
83 isConstantRep :: SMRep -> Bool
84 isPhantomRep :: SMRep -> Bool
85 isSpecRep :: SMRep -> Bool
86 isStaticClosure :: ClosureInfo -> Bool
87 layOutDynClosure :: Id -> (a -> PrimKind) -> [a] -> LambdaFormInfo -> (ClosureInfo, [(a, HeapOffset)])
88 layOutDynCon :: Id -> (a -> PrimKind) -> [a] -> (ClosureInfo, [(a, HeapOffset)])
89 layOutPhantomClosure :: Id -> LambdaFormInfo -> ClosureInfo
90 layOutStaticClosure :: Id -> (a -> PrimKind) -> [a] -> LambdaFormInfo -> (ClosureInfo, [(a, HeapOffset)])
91 layOutStaticNoFVClosure :: Id -> LambdaFormInfo -> ClosureInfo
92 ltSMRepHdr :: SMRep -> SMRep -> Bool
93 maybeSelectorInfo :: ClosureInfo -> Labda (Id, Int)
94 mkClosureLFInfo :: Bool -> [Id] -> UpdateFlag -> [Id] -> StgExpr Id Id -> LambdaFormInfo
95 mkConLFInfo :: Id -> LambdaFormInfo
96 mkLFArgument :: LambdaFormInfo
97 mkLFImported :: Id -> LambdaFormInfo
98 mkLFLetNoEscape :: Int -> UniqFM Id -> LambdaFormInfo
99 mkVirtHeapOffsets :: SMRep -> (a -> PrimKind) -> [a] -> (Int, Int, [(a, HeapOffset)])
100 noUpdVapRequired :: StgBinderInfo -> Bool
101 nodeMustPointToIt :: LambdaFormInfo -> CgInfoDownwards -> CgState -> (Bool, CgState)
102 slopSize :: ClosureInfo -> Int
103 slowFunEntryCodeRequired :: Id -> StgBinderInfo -> Bool
104 staticClosureRequired :: Id -> StgBinderInfo -> LambdaFormInfo -> Bool
105 stdVapRequired :: StgBinderInfo -> Bool
106