Safe Haskell | None |
---|---|
Language | Haskell98 |
- data CLabel
- data ForeignLabelSource
- pprDebugCLabel :: CLabel -> SDoc
- mkClosureLabel :: Name -> CafInfo -> CLabel
- mkSRTLabel :: Name -> CafInfo -> CLabel
- mkTopSRTLabel :: Unique -> CLabel
- mkInfoTableLabel :: Name -> CafInfo -> CLabel
- mkEntryLabel :: Name -> CafInfo -> CLabel
- mkSlowEntryLabel :: Name -> CafInfo -> CLabel
- mkConEntryLabel :: Name -> CafInfo -> CLabel
- mkStaticConEntryLabel :: Name -> CafInfo -> CLabel
- mkRednCountsLabel :: Name -> 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
- mkRtsSlowFastTickyCtrLabel :: String -> CLabel
- mkSelectorInfoLabel :: Bool -> Int -> CLabel
- mkSelectorEntryLabel :: Bool -> Int -> CLabel
- mkCmmInfoLabel :: PackageId -> FastString -> CLabel
- mkCmmEntryLabel :: PackageId -> FastString -> CLabel
- mkCmmRetInfoLabel :: PackageId -> FastString -> CLabel
- mkCmmRetLabel :: PackageId -> FastString -> CLabel
- mkCmmCodeLabel :: PackageId -> FastString -> CLabel
- mkCmmDataLabel :: PackageId -> FastString -> CLabel
- mkCmmClosureLabel :: 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
- mkDynamicLinkerLabel :: DynamicLinkerLabelInfo -> CLabel -> CLabel
- dynamicLinkerLabelInfo :: CLabel -> Maybe (DynamicLinkerLabelInfo, CLabel)
- mkPicBaseLabel :: CLabel
- mkDeadStripPreventer :: CLabel -> CLabel
- mkHpcTicksLabel :: Module -> CLabel
- hasCAF :: CLabel -> Bool
- needsCDecl :: CLabel -> Bool
- isAsmTemp :: CLabel -> Bool
- maybeAsmTemp :: CLabel -> Maybe Unique
- externallyVisibleCLabel :: CLabel -> Bool
- isMathFun :: CLabel -> Bool
- isCFunctionLabel :: CLabel -> Bool
- isGcPtrLabel :: CLabel -> Bool
- labelDynamic :: DynFlags -> PackageId -> Module -> CLabel -> Bool
- toClosureLbl :: CLabel -> CLabel
- toSlowEntryLbl :: CLabel -> CLabel
- toEntryLbl :: CLabel -> CLabel
- toInfoLbl :: CLabel -> CLabel
- toRednCountsLbl :: CLabel -> Maybe CLabel
- hasHaskellName :: CLabel -> Maybe Name
- pprCLabel :: Platform -> 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 -> SDoc Source
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 -> CLabel Source
mkSRTLabel :: Name -> CafInfo -> CLabel Source
mkTopSRTLabel :: Unique -> CLabel Source
mkInfoTableLabel :: Name -> CafInfo -> CLabel Source
mkEntryLabel :: Name -> CafInfo -> CLabel Source
mkSlowEntryLabel :: Name -> CafInfo -> CLabel Source
mkConEntryLabel :: Name -> CafInfo -> CLabel Source
mkStaticConEntryLabel :: Name -> CafInfo -> CLabel Source
mkRednCountsLabel :: Name -> CLabel Source
mkConInfoTableLabel :: Name -> CafInfo -> CLabel Source
mkStaticInfoTableLabel :: Name -> CafInfo -> CLabel Source
mkLargeSRTLabel :: Unique -> CLabel Source
mkApEntryLabel :: Bool -> Int -> CLabel Source
mkApInfoTableLabel :: Bool -> Int -> CLabel Source
mkClosureTableLabel :: Name -> CafInfo -> CLabel Source
mkLocalClosureLabel :: Name -> CafInfo -> CLabel Source
mkLocalInfoTableLabel :: Name -> CafInfo -> CLabel Source
mkLocalEntryLabel :: Name -> CafInfo -> CLabel Source
mkLocalConEntryLabel :: CafInfo -> Name -> CLabel Source
mkLocalStaticConEntryLabel :: CafInfo -> Name -> CLabel Source
mkLocalConInfoTableLabel :: CafInfo -> Name -> CLabel Source
mkLocalStaticInfoTableLabel :: CafInfo -> Name -> CLabel Source
mkLocalClosureTableLabel :: Name -> CafInfo -> CLabel Source
mkReturnPtLabel :: Unique -> CLabel Source
mkReturnInfoLabel :: Unique -> CLabel Source
mkAltLabel :: Unique -> ConTag -> CLabel Source
mkDefaultLabel :: Unique -> CLabel Source
mkBitmapLabel :: Unique -> CLabel Source
mkStringLitLabel :: Unique -> CLabel Source
mkAsmTempLabel :: Uniquable a => a -> CLabel Source
mkRtsPrimOpLabel :: PrimOp -> CLabel Source
mkSelectorInfoLabel :: Bool -> Int -> CLabel Source
mkSelectorEntryLabel :: Bool -> Int -> CLabel Source
mkCmmInfoLabel :: PackageId -> FastString -> CLabel Source
mkCmmEntryLabel :: PackageId -> FastString -> CLabel Source
mkCmmRetInfoLabel :: PackageId -> FastString -> CLabel Source
mkCmmRetLabel :: PackageId -> FastString -> CLabel Source
mkCmmCodeLabel :: PackageId -> FastString -> CLabel Source
mkCmmDataLabel :: PackageId -> FastString -> CLabel Source
mkCmmClosureLabel :: PackageId -> FastString -> CLabel Source
mkPrimCallLabel :: PrimCall -> CLabel Source
mkForeignLabel :: FastString -> Maybe Int -> ForeignLabelSource -> FunctionOrData -> CLabel Source
Make a foreign label
addLabelSize :: CLabel -> Int -> CLabel Source
Update the label size field in a ForeignLabel
foreignLabelStdcallInfo :: CLabel -> Maybe Int Source
Get the label size field from a ForeignLabel
mkCCLabel :: CostCentre -> CLabel Source
mkHpcTicksLabel :: Module -> CLabel Source
needsCDecl :: CLabel -> Bool Source
isAsmTemp :: CLabel -> Bool Source
Check whether a label is a local temporary for native code generation
maybeAsmTemp :: CLabel -> Maybe Unique Source
If a label is a local temporary used for native code generation then return just its unique, otherwise nothing.
externallyVisibleCLabel :: CLabel -> Bool Source
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 -> Bool Source
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 -> Bool Source
isGcPtrLabel :: CLabel -> Bool Source
Conversions
toClosureLbl :: CLabel -> CLabel Source
toSlowEntryLbl :: CLabel -> CLabel Source
toEntryLbl :: CLabel -> CLabel Source
toRednCountsLbl :: CLabel -> Maybe CLabel Source
hasHaskellName :: CLabel -> Maybe Name Source