- data CLabel
- data ForeignLabelSource
- pprDebugCLabel :: CLabel -> SDoc
- mkClosureLabel :: Name -> CafInfo -> CLabel
- mkSRTLabel :: Name -> CafInfo -> CLabel
- mkInfoTableLabel :: Name -> CafInfo -> CLabel
- mkEntryLabel :: Name -> CafInfo -> CLabel
- mkSlowEntryLabel :: Name -> CafInfo -> CLabel
- mkConEntryLabel :: Name -> CafInfo -> CLabel
- mkStaticConEntryLabel :: Name -> CafInfo -> CLabel
- mkRednCountsLabel :: Name -> CafInfo -> CLabel
- mkConInfoTableLabel :: Name -> CafInfo -> CLabel
- mkStaticInfoTableLabel :: Name -> CafInfo -> CLabel
- mkLargeSRTLabel :: Unique -> CLabel
- mkApEntryLabel :: Bool -> Int -> CLabel
- mkApInfoTableLabel :: Bool -> Int -> CLabel
- mkClosureTableLabel :: Name -> CafInfo -> CLabel
- mkLocalClosureLabel :: Name -> CafInfo -> CLabel
- mkLocalInfoTableLabel :: Name -> CafInfo -> CLabel
- mkLocalEntryLabel :: Name -> CafInfo -> CLabel
- mkLocalConEntryLabel :: CafInfo -> Name -> CLabel
- mkLocalStaticConEntryLabel :: CafInfo -> Name -> CLabel
- mkLocalConInfoTableLabel :: CafInfo -> Name -> CLabel
- mkLocalStaticInfoTableLabel :: CafInfo -> Name -> CLabel
- mkLocalClosureTableLabel :: Name -> CafInfo -> CLabel
- mkReturnPtLabel :: Unique -> CLabel
- mkReturnInfoLabel :: Unique -> CLabel
- mkAltLabel :: Unique -> ConTag -> CLabel
- mkDefaultLabel :: Unique -> CLabel
- mkBitmapLabel :: Unique -> CLabel
- mkStringLitLabel :: Unique -> CLabel
- mkAsmTempLabel :: Uniquable a => a -> CLabel
- mkPlainModuleInitLabel :: Module -> CLabel
- mkSplitMarkerLabel :: CLabel
- mkDirty_MUT_VAR_Label :: CLabel
- mkUpdInfoLabel :: CLabel
- mkBHUpdInfoLabel :: CLabel
- mkIndStaticInfoLabel :: CLabel
- mkMainCapabilityLabel :: CLabel
- mkMAP_FROZEN_infoLabel :: CLabel
- mkMAP_DIRTY_infoLabel :: CLabel
- mkEMPTY_MVAR_infoLabel :: CLabel
- mkTopTickyCtrLabel :: CLabel
- mkCAFBlackHoleInfoTableLabel :: CLabel
- mkCAFBlackHoleEntryLabel :: CLabel
- mkRtsPrimOpLabel :: PrimOp -> CLabel
- mkRtsSlowTickyCtrLabel :: String -> CLabel
- mkSelectorInfoLabel :: Bool -> Int -> CLabel
- mkSelectorEntryLabel :: Bool -> Int -> CLabel
- mkCmmInfoLabel, mkCmmGcPtrLabel, mkCmmDataLabel, mkCmmCodeLabel, mkCmmRetLabel, mkCmmRetInfoLabel, mkCmmEntryLabel :: PackageId -> FastString -> CLabel
- mkRtsApFastLabel :: FastString -> CLabel
- mkPrimCallLabel :: PrimCall -> CLabel
- mkForeignLabel :: FastString -> Maybe Int -> ForeignLabelSource -> FunctionOrData -> CLabel
- addLabelSize :: CLabel -> Int -> CLabel
- foreignLabelStdcallInfo :: CLabel -> Maybe Int
- mkCCLabel :: CostCentre -> CLabel
- mkCCSLabel :: CostCentreStack -> CLabel
- data DynamicLinkerLabelInfo
- = CodeStub
- | SymbolPtr
- | GotSymbolPtr
- | GotSymbolOffset
- mkDynamicLinkerLabel :: DynamicLinkerLabelInfo -> CLabel -> CLabel
- dynamicLinkerLabelInfo :: CLabel -> Maybe (DynamicLinkerLabelInfo, CLabel)
- mkPicBaseLabel :: CLabel
- mkDeadStripPreventer :: CLabel -> CLabel
- mkHpcTicksLabel :: Module -> CLabel
- hasCAF :: CLabel -> Bool
- cvtToClosureLbl :: CLabel -> CLabel
- needsCDecl :: CLabel -> Bool
- isAsmTemp :: CLabel -> Bool
- maybeAsmTemp :: CLabel -> Maybe Unique
- externallyVisibleCLabel :: CLabel -> Bool
- isMathFun :: CLabel -> Bool
- isCFunctionLabel :: CLabel -> Bool
- isGcPtrLabel :: CLabel -> Bool
- labelDynamic :: PackageId -> CLabel -> Bool
- pprCLabel :: CLabel -> SDoc
Documentation
data ForeignLabelSource Source
Record where a foreign label is stored.
ForeignLabelInPackage PackageId | Label is in a named package |
ForeignLabelInExternalPackage | Label is in some external, system package that doesn't also contain compiled Haskell code, and is not associated with any .hi files. We don't have to worry about Haskell code being inlined from external packages. It is safe to treat the RTS package as external. |
ForeignLabelInThisPackage | Label is in the package currenly being compiled. This is only used for creating hacky tmp labels during code generation. Don't use it in any code that might be inlined across a package boundary (ie, core code) else the information will be wrong relative to the destination module. |
pprDebugCLabel :: CLabel -> SDocSource
For debugging problems with the CLabel representation. We can't make a Show instance for CLabel because lots of its components don't have instances. The regular Outputable instance only shows the label name, and not its other info.
mkClosureLabel :: Name -> CafInfo -> CLabelSource
mkSRTLabel :: Name -> CafInfo -> CLabelSource
mkInfoTableLabel :: Name -> CafInfo -> CLabelSource
mkEntryLabel :: Name -> CafInfo -> CLabelSource
mkSlowEntryLabel :: Name -> CafInfo -> CLabelSource
mkConEntryLabel :: Name -> CafInfo -> CLabelSource
mkStaticConEntryLabel :: Name -> CafInfo -> CLabelSource
mkRednCountsLabel :: Name -> CafInfo -> CLabelSource
mkConInfoTableLabel :: Name -> CafInfo -> CLabelSource
mkStaticInfoTableLabel :: Name -> CafInfo -> CLabelSource
mkApEntryLabel :: Bool -> Int -> CLabelSource
mkApInfoTableLabel :: Bool -> Int -> CLabelSource
mkClosureTableLabel :: Name -> CafInfo -> CLabelSource
mkLocalClosureLabel :: Name -> CafInfo -> CLabelSource
mkLocalInfoTableLabel :: Name -> CafInfo -> CLabelSource
mkLocalEntryLabel :: Name -> CafInfo -> CLabelSource
mkLocalConEntryLabel :: CafInfo -> Name -> CLabelSource
mkLocalConInfoTableLabel :: CafInfo -> Name -> CLabelSource
mkLocalClosureTableLabel :: Name -> CafInfo -> CLabelSource
mkAltLabel :: Unique -> ConTag -> CLabelSource
mkDefaultLabel :: Unique -> CLabelSource
mkBitmapLabel :: Unique -> CLabelSource
mkAsmTempLabel :: Uniquable a => a -> CLabelSource
mkSelectorInfoLabel :: Bool -> Int -> CLabelSource
mkSelectorEntryLabel :: Bool -> Int -> CLabelSource
mkCmmInfoLabel, mkCmmGcPtrLabel, mkCmmDataLabel, mkCmmCodeLabel, mkCmmRetLabel, mkCmmRetInfoLabel, mkCmmEntryLabel :: PackageId -> FastString -> CLabelSource
mkForeignLabel :: FastString -> Maybe Int -> ForeignLabelSource -> FunctionOrData -> CLabelSource
Make a foreign label
addLabelSize :: CLabel -> Int -> CLabelSource
Update the label size field in a ForeignLabel
foreignLabelStdcallInfo :: CLabel -> Maybe IntSource
Get the label size field from a ForeignLabel
mkCCLabel :: CostCentre -> CLabelSource
needsCDecl :: CLabel -> BoolSource
isAsmTemp :: CLabel -> BoolSource
Check whether a label is a local temporary for native code generation
maybeAsmTemp :: CLabel -> Maybe UniqueSource
If a label is a local temporary used for native code generation then return just its unique, otherwise nothing.
externallyVisibleCLabel :: CLabel -> BoolSource
Is a CLabel visible outside this object file or not? From the point of view of the code generator, a name is externally visible if it has to be declared as exported in the .o file's symbol table; that is, made non-static.
isMathFun :: CLabel -> BoolSource
Check whether a label corresponds to a C function that has a prototype in a system header somehere, or is built-in to the C compiler. For these labels we avoid generating our own C prototypes.
isCFunctionLabel :: CLabel -> BoolSource
isGcPtrLabel :: CLabel -> BoolSource
labelDynamic :: PackageId -> CLabel -> BoolSource