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)
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(..))
19 import UniType(UniType)
21 import UniqSet(UniqSet(..))
32 data EntryConvention = ViaNode | StdEntry CLabel (Labda CLabel) | DirectEntry CLabel Int [MagicId]
33 type FCode a = CgInfoDownwards -> CgState -> (a, CgState)
41 type PlainStgAtom = StgAtom Id
42 type PlainStgExpr = StgExpr Id Id
43 type PlainStgLiveVars = UniqFM Id
48 data UpdateFlag = ReEntrant | Updatable | SingleEntry
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