base-4.18.1.0: Basic libraries

Copyright | (c) The University of Glasgow 2011
License | see libraries/base/LICENSE
Maintainer | cvs-ghc@haskell.org
Stability | internal
Portability | non-portable (GHC Extensions)
Safe Haskell | Trustworthy
Language | Haskell2010

GHC.InfoProv

Contents

- Internals

Description

Access to GHC's info-table provenance metadata.

Since: base-4.18.0.0

Synopsis

- data InfoProv = InfoProv {
  - ipName :: String
  - ipDesc :: String
  - ipTyDesc :: String
  - ipLabel :: String
  - ipMod :: String
  - ipSrcFile :: String
  - ipSrcSpan :: String
  }
- ipLoc :: InfoProv -> String
- ipeProv :: Ptr InfoProvEnt -> Ptr InfoProv
- whereFrom :: a -> IO (Maybe InfoProv)
- data InfoProvEnt
- peekInfoProv :: Ptr InfoProv -> IO InfoProv

# Documentation

data InfoProv Source #

Constructors

InfoProv |

Fields

- ipName :: String
- ipDesc :: String
- ipTyDesc :: String
- ipLabel :: String
- ipMod :: String
- ipSrcFile :: String
- ipSrcSpan :: String

#### Instances

Instances details

Show InfoProv Source # |
Instance details Defined in GHC.InfoProv Methods showsPrec :: Int -> InfoProv -> ShowS Source # show :: InfoProv -> String Source # showList :: [InfoProv] -> ShowS Source #
Eq InfoProv Source # |
Instance details Defined in GHC.InfoProv Methods (==) :: InfoProv -> InfoProv -> Bool Source # (/=) :: InfoProv -> InfoProv -> Bool Source #

ipLoc :: InfoProv -> String Source #

ipeProv :: Ptr InfoProvEnt -> Ptr InfoProv Source #

whereFrom :: a -> IO (Maybe InfoProv) Source #

Get information about where a value originated from. This information is stored statically in a binary when `-finfo-table-map` is enabled. The source positions will be greatly improved by also enabled debug information with `-g3`. Finally you can enable `-fdistinct-constructor-tables` to get more precise information about data constructor allocations.

The information is collect by looking at the info table address of a specific closure and then consulting a specially generated map (by `-finfo-table-map`) to find out where we think the best source position to describe that info table arose from.

Since: base-4.16.0.0

# Internals

data InfoProvEnt Source #

peekInfoProv :: Ptr InfoProv -> IO InfoProv Source #