ghc-lib-0.20190204: The GHC API, decoupled from GHC versions

Copyright(c) 2012 Joachim Breitner
LicenseBSD3
MaintainerJoachim Breitner <mail@joachim-breitner.de>
Safe HaskellNone
LanguageHaskell2010

GHC.Exts.Heap

Description

With this module, you can investigate the heap representation of Haskell values, i.e. to investigate sharing and lazy evaluation.

Synopsis

Closure types

type Closure = GenClosure Box Source #

data GenClosure b Source #

This is the representation of a Haskell value on the heap. It reflects http://ghc.haskell.org/trac/ghc/browser/includes/rts/storage/Closures.h

The data type is parametrized by the type to store references in. Usually this is a Box with the type synonym Closure .

All Heap objects have the same basic layout. A header containing a pointer to the info table and a payload with various fields. The info field below always refers to the info table pointed to by the header. The remaining fields are the payload.

See https://ghc.haskell.org/trac/ghc/wiki/Commentary/Rts/Storage/HeapObjects for more information.

Constructors

ConstrClosure

A data constructor

Fields

FunClosure

A function

Fields

ThunkClosure

A thunk, an expression not obviously in head normal form

Fields

SelectorClosure

A thunk which performs a simple selection operation

Fields

PAPClosure

An unsaturated function application

Fields

APClosure

A function application

Fields

APStackClosure

A suspended thunk evaluation

Fields

IndClosure

A pointer to another closure, introduced when a thunk is updated to point at its value

Fields

BCOClosure

A byte-code object (BCO) which can be interpreted by GHC's byte-code interpreter (e.g. as used by GHCi)

Fields

  • info :: !StgInfoTable
  • instrs :: !b

    A pointer to an ArrWords of instructions

  • literals :: !b

    A pointer to an ArrWords of literals

  • bcoptrs :: !b

    A pointer to an ArrWords of byte code objects

  • arity :: !HalfWord

    Arity of the partial application

  • size :: !HalfWord

    The size of this BCO in words

  • bitmap :: ![Word]

    An StgLargeBitmap describing the pointerhood of its args/free vars

BlackholeClosure

A thunk under evaluation by another thread

Fields

ArrWordsClosure

A ByteArray#

Fields

MutArrClosure

A MutableByteArray#

Fields

MVarClosure

An MVar#, with a queue of thread state objects blocking on them

Fields

MutVarClosure

A MutVar#

Fields

BlockingQueueClosure

An STM blocking queue.

Fields

IntClosure

Primitive Int

Fields

WordClosure

Primitive Word

Fields

Int64Closure

Primitive Int64

Word64Closure

Primitive Word64

AddrClosure

Primitive Addr

Fields

FloatClosure

Primitive Float

DoubleClosure

Primitive Double

OtherClosure

Another kind of closure

Fields

Fields

Instances
Instance details

Defined in GHC.Exts.Heap.Closures

Methods

fmap :: (a -> b) -> GenClosure a -> GenClosure b #

(<$) :: a -> GenClosure b -> GenClosure a #

Instance details

Defined in GHC.Exts.Heap.Closures

Methods

fold :: Monoid m => GenClosure m -> m #

foldMap :: Monoid m => (a -> m) -> GenClosure a -> m #

foldr :: (a -> b -> b) -> b -> GenClosure a -> b #

foldr' :: (a -> b -> b) -> b -> GenClosure a -> b #

foldl :: (b -> a -> b) -> b -> GenClosure a -> b #

foldl' :: (b -> a -> b) -> b -> GenClosure a -> b #

foldr1 :: (a -> a -> a) -> GenClosure a -> a #

foldl1 :: (a -> a -> a) -> GenClosure a -> a #

toList :: GenClosure a -> [a] #

null :: GenClosure a -> Bool #

length :: GenClosure a -> Int #

elem :: Eq a => a -> GenClosure a -> Bool #

maximum :: Ord a => GenClosure a -> a #

minimum :: Ord a => GenClosure a -> a #

sum :: Num a => GenClosure a -> a #

product :: Num a => GenClosure a -> a #

Instance details

Defined in GHC.Exts.Heap.Closures

Methods

traverse :: Applicative f => (a -> f b) -> GenClosure a -> f (GenClosure b) #

sequenceA :: Applicative f => GenClosure (f a) -> f (GenClosure a) #

mapM :: Monad m => (a -> m b) -> GenClosure a -> m (GenClosure b) #

sequence :: Monad m => GenClosure (m a) -> m (GenClosure a) #

Instance details

Defined in GHC.Exts.Heap.Closures

Methods

showsPrec :: Int -> GenClosure b -> ShowS #

show :: GenClosure b -> String #

showList :: [GenClosure b] -> ShowS #

Instance details

Defined in GHC.Exts.Heap.Closures

Associated Types

type Rep (GenClosure b) :: Type -> Type #

Methods

from :: GenClosure b -> Rep (GenClosure b) x #

to :: Rep (GenClosure b) x -> GenClosure b #

Instance details

Defined in GHCi.Message

Methods

put :: GenClosure a -> Put #

get :: Get (GenClosure a) #

putList :: [GenClosure a] -> Put #

type Rep (GenClosure b) Source #
Instance details

Defined in GHC.Exts.Heap.Closures

type Rep (GenClosure b) = D1 (MetaData "GenClosure" "GHC.Exts.Heap.Closures" "ghc-lib-0.20190204-8PmsVmG6Lfq3uCuHOLppjw" False) ((((C1 (MetaCons "ConstrClosure" PrefixI True) ((S1 (MetaSel (Just "info") NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 StgInfoTable) :*: (S1 (MetaSel (Just "ptrArgs") NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 [b]) :*: S1 (MetaSel (Just "dataArgs") NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 [Word]))) :*: (S1 (MetaSel (Just "pkg") NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 String) :*: (S1 (MetaSel (Just "modl") NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 String) :*: S1 (MetaSel (Just "name") NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 String)))) :+: (C1 (MetaCons "FunClosure" PrefixI True) (S1 (MetaSel (Just "info") NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 StgInfoTable) :*: (S1 (MetaSel (Just "ptrArgs") NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 [b]) :*: S1 (MetaSel (Just "dataArgs") NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 [Word]))) :+: C1 (MetaCons "ThunkClosure" PrefixI True) (S1 (MetaSel (Just "info") NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 StgInfoTable) :*: (S1 (MetaSel (Just "ptrArgs") NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 [b]) :*: S1 (MetaSel (Just "dataArgs") NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 [Word]))))) :+: (C1 (MetaCons "SelectorClosure" PrefixI True) (S1 (MetaSel (Just "info") NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 StgInfoTable) :*: S1 (MetaSel (Just "selectee") NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 b)) :+: (C1 (MetaCons "PAPClosure" PrefixI True) ((S1 (MetaSel (Just "info") NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 StgInfoTable) :*: S1 (MetaSel (Just "arity") NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 HalfWord)) :*: (S1 (MetaSel (Just "n_args") NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 HalfWord) :*: (S1 (MetaSel (Just "fun") NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 b) :*: S1 (MetaSel (Just "payload") NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 [b])))) :+: C1 (MetaCons "APClosure" PrefixI True) ((S1 (MetaSel (Just "info") NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 StgInfoTable) :*: S1 (MetaSel (Just "arity") NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 HalfWord)) :*: (S1 (MetaSel (Just "n_args") NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 HalfWord) :*: (S1 (MetaSel (Just "fun") NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 b) :*: S1 (MetaSel (Just "payload") NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 [b]))))))) :+: ((C1 (MetaCons "APStackClosure" PrefixI True) (S1 (MetaSel (Just "info") NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 StgInfoTable) :*: (S1 (MetaSel (Just "fun") NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 b) :*: S1 (MetaSel (Just "payload") NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 [b]))) :+: (C1 (MetaCons "IndClosure" PrefixI True) (S1 (MetaSel (Just "info") NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 StgInfoTable) :*: S1 (MetaSel (Just "indirectee") NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 b)) :+: C1 (MetaCons "BCOClosure" PrefixI True) ((S1 (MetaSel (Just "info") NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 StgInfoTable) :*: (S1 (MetaSel (Just "instrs") NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 b) :*: S1 (MetaSel (Just "literals") NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 b))) :*: ((S1 (MetaSel (Just "bcoptrs") NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 b) :*: S1 (MetaSel (Just "arity") NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 HalfWord)) :*: (S1 (MetaSel (Just "size") NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 HalfWord) :*: S1 (MetaSel (Just "bitmap") NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 [Word])))))) :+: (C1 (MetaCons "BlackholeClosure" PrefixI True) (S1 (MetaSel (Just "info") NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 StgInfoTable) :*: S1 (MetaSel (Just "indirectee") NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 b)) :+: (C1 (MetaCons "ArrWordsClosure" PrefixI True) (S1 (MetaSel (Just "info") NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 StgInfoTable) :*: (S1 (MetaSel (Just "bytes") NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 Word) :*: S1 (MetaSel (Just "arrWords") NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 [Word]))) :+: C1 (MetaCons "MutArrClosure" PrefixI True) ((S1 (MetaSel (Just "info") NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 StgInfoTable) :*: S1 (MetaSel (Just "mccPtrs") NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 Word)) :*: (S1 (MetaSel (Just "mccSize") NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 Word) :*: S1 (MetaSel (Just "mccPayload") NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 [b]))))))) :+: (((C1 (MetaCons "MVarClosure" PrefixI True) ((S1 (MetaSel (Just "info") NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 StgInfoTable) :*: S1 (MetaSel (Just "queueHead") NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 b)) :*: (S1 (MetaSel (Just "queueTail") NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 b) :*: S1 (MetaSel (Just "value") NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 b))) :+: (C1 (MetaCons "MutVarClosure" PrefixI True) (S1 (MetaSel (Just "info") NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 StgInfoTable) :*: S1 (MetaSel (Just "var") NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 b)) :+: C1 (MetaCons "BlockingQueueClosure" PrefixI True) ((S1 (MetaSel (Just "info") NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 StgInfoTable) :*: S1 (MetaSel (Just "link") NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 b)) :*: (S1 (MetaSel (Just "blackHole") NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 b) :*: (S1 (MetaSel (Just "owner") NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 b) :*: S1 (MetaSel (Just "queue") NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 b)))))) :+: (C1 (MetaCons "IntClosure" PrefixI True) (S1 (MetaSel (Just "ptipe") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 PrimType) :*: S1 (MetaSel (Just "intVal") NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 Int)) :+: (C1 (MetaCons "WordClosure" PrefixI True) (S1 (MetaSel (Just "ptipe") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 PrimType) :*: S1 (MetaSel (Just "wordVal") NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 Word)) :+: C1 (MetaCons "Int64Closure" PrefixI True) (S1 (MetaSel (Just "ptipe") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 PrimType) :*: S1 (MetaSel (Just "int64Val") NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 Int64))))) :+: ((C1 (MetaCons "Word64Closure" PrefixI True) (S1 (MetaSel (Just "ptipe") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 PrimType) :*: S1 (MetaSel (Just "word64Val") NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 Word64)) :+: (C1 (MetaCons "AddrClosure" PrefixI True) (S1 (MetaSel (Just "ptipe") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 PrimType) :*: S1 (MetaSel (Just "addrVal") NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 Int)) :+: C1 (MetaCons "FloatClosure" PrefixI True) (S1 (MetaSel (Just "ptipe") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 PrimType) :*: S1 (MetaSel (Just "floatVal") NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 Float)))) :+: (C1 (MetaCons "DoubleClosure" PrefixI True) (S1 (MetaSel (Just "ptipe") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 PrimType) :*: S1 (MetaSel (Just "doubleVal") NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 Double)) :+: (C1 (MetaCons "OtherClosure" PrefixI True) (S1 (MetaSel (Just "info") NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 StgInfoTable) :*: (S1 (MetaSel (Just "hvalues") NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 [b]) :*: S1 (MetaSel (Just "rawWords") NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 [Word]))) :+: C1 (MetaCons "UnsupportedClosure" PrefixI True) (S1 (MetaSel (Just "info") NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 StgInfoTable)))))))

data ClosureType Source #

Constructors

FUN
BCO
AP
PAP
IND
TSO
Instances
Instance details

Defined in GHC.Exts.Heap.ClosureTypes

Instance details

Defined in GHC.Exts.Heap.ClosureTypes

Instance details

Defined in GHC.Exts.Heap.ClosureTypes

Associated Types

type Rep ClosureType :: Type -> Type #

Instance details

Defined in GHCi.Message

Instance details

Defined in GHC.Exts.Heap.ClosureTypes

type Rep ClosureType = D1 (MetaData "ClosureType" "GHC.Exts.Heap.ClosureTypes" "ghc-lib-0.20190204-8PmsVmG6Lfq3uCuHOLppjw" False) ((((((C1 (MetaCons "INVALID_OBJECT" PrefixI False) (U1 :: Type -> Type) :+: C1 (MetaCons "CONSTR" PrefixI False) (U1 :: Type -> Type)) :+: (C1 (MetaCons "CONSTR_1_0" PrefixI False) (U1 :: Type -> Type) :+: C1 (MetaCons "CONSTR_0_1" PrefixI False) (U1 :: Type -> Type))) :+: ((C1 (MetaCons "CONSTR_2_0" PrefixI False) (U1 :: Type -> Type) :+: C1 (MetaCons "CONSTR_1_1" PrefixI False) (U1 :: Type -> Type)) :+: (C1 (MetaCons "CONSTR_0_2" PrefixI False) (U1 :: Type -> Type) :+: C1 (MetaCons "CONSTR_NOCAF" PrefixI False) (U1 :: Type -> Type)))) :+: (((C1 (MetaCons "FUN" PrefixI False) (U1 :: Type -> Type) :+: C1 (MetaCons "FUN_1_0" PrefixI False) (U1 :: Type -> Type)) :+: (C1 (MetaCons "FUN_0_1" PrefixI False) (U1 :: Type -> Type) :+: C1 (MetaCons "FUN_2_0" PrefixI False) (U1 :: Type -> Type))) :+: ((C1 (MetaCons "FUN_1_1" PrefixI False) (U1 :: Type -> Type) :+: C1 (MetaCons "FUN_0_2" PrefixI False) (U1 :: Type -> Type)) :+: (C1 (MetaCons "FUN_STATIC" PrefixI False) (U1 :: Type -> Type) :+: C1 (MetaCons "THUNK" PrefixI False) (U1 :: Type -> Type))))) :+: ((((C1 (MetaCons "THUNK_1_0" PrefixI False) (U1 :: Type -> Type) :+: C1 (MetaCons "THUNK_0_1" PrefixI False) (U1 :: Type -> Type)) :+: (C1 (MetaCons "THUNK_2_0" PrefixI False) (U1 :: Type -> Type) :+: C1 (MetaCons "THUNK_1_1" PrefixI False) (U1 :: Type -> Type))) :+: ((C1 (MetaCons "THUNK_0_2" PrefixI False) (U1 :: Type -> Type) :+: C1 (MetaCons "THUNK_STATIC" PrefixI False) (U1 :: Type -> Type)) :+: (C1 (MetaCons "THUNK_SELECTOR" PrefixI False) (U1 :: Type -> Type) :+: C1 (MetaCons "BCO" PrefixI False) (U1 :: Type -> Type)))) :+: (((C1 (MetaCons "AP" PrefixI False) (U1 :: Type -> Type) :+: C1 (MetaCons "PAP" PrefixI False) (U1 :: Type -> Type)) :+: (C1 (MetaCons "AP_STACK" PrefixI False) (U1 :: Type -> Type) :+: C1 (MetaCons "IND" PrefixI False) (U1 :: Type -> Type))) :+: ((C1 (MetaCons "IND_STATIC" PrefixI False) (U1 :: Type -> Type) :+: C1 (MetaCons "RET_BCO" PrefixI False) (U1 :: Type -> Type)) :+: (C1 (MetaCons "RET_SMALL" PrefixI False) (U1 :: Type -> Type) :+: C1 (MetaCons "RET_BIG" PrefixI False) (U1 :: Type -> Type)))))) :+: (((((C1 (MetaCons "RET_FUN" PrefixI False) (U1 :: Type -> Type) :+: C1 (MetaCons "UPDATE_FRAME" PrefixI False) (U1 :: Type -> Type)) :+: (C1 (MetaCons "CATCH_FRAME" PrefixI False) (U1 :: Type -> Type) :+: C1 (MetaCons "UNDERFLOW_FRAME" PrefixI False) (U1 :: Type -> Type))) :+: ((C1 (MetaCons "STOP_FRAME" PrefixI False) (U1 :: Type -> Type) :+: C1 (MetaCons "BLOCKING_QUEUE" PrefixI False) (U1 :: Type -> Type)) :+: (C1 (MetaCons "BLACKHOLE" PrefixI False) (U1 :: Type -> Type) :+: C1 (MetaCons "MVAR_CLEAN" PrefixI False) (U1 :: Type -> Type)))) :+: (((C1 (MetaCons "MVAR_DIRTY" PrefixI False) (U1 :: Type -> Type) :+: C1 (MetaCons "TVAR" PrefixI False) (U1 :: Type -> Type)) :+: (C1 (MetaCons "ARR_WORDS" PrefixI False) (U1 :: Type -> Type) :+: C1 (MetaCons "MUT_ARR_PTRS_CLEAN" PrefixI False) (U1 :: Type -> Type))) :+: ((C1 (MetaCons "MUT_ARR_PTRS_DIRTY" PrefixI False) (U1 :: Type -> Type) :+: C1 (MetaCons "MUT_ARR_PTRS_FROZEN_DIRTY" PrefixI False) (U1 :: Type -> Type)) :+: (C1 (MetaCons "MUT_ARR_PTRS_FROZEN_CLEAN" PrefixI False) (U1 :: Type -> Type) :+: C1 (MetaCons "MUT_VAR_CLEAN" PrefixI False) (U1 :: Type -> Type))))) :+: ((((C1 (MetaCons "MUT_VAR_DIRTY" PrefixI False) (U1 :: Type -> Type) :+: C1 (MetaCons "WEAK" PrefixI False) (U1 :: Type -> Type)) :+: (C1 (MetaCons "PRIM" PrefixI False) (U1 :: Type -> Type) :+: C1 (MetaCons "MUT_PRIM" PrefixI False) (U1 :: Type -> Type))) :+: ((C1 (MetaCons "TSO" PrefixI False) (U1 :: Type -> Type) :+: C1 (MetaCons "STACK" PrefixI False) (U1 :: Type -> Type)) :+: (C1 (MetaCons "TREC_CHUNK" PrefixI False) (U1 :: Type -> Type) :+: C1 (MetaCons "ATOMICALLY_FRAME" PrefixI False) (U1 :: Type -> Type)))) :+: (((C1 (MetaCons "CATCH_RETRY_FRAME" PrefixI False) (U1 :: Type -> Type) :+: C1 (MetaCons "CATCH_STM_FRAME" PrefixI False) (U1 :: Type -> Type)) :+: (C1 (MetaCons "WHITEHOLE" PrefixI False) (U1 :: Type -> Type) :+: C1 (MetaCons "SMALL_MUT_ARR_PTRS_CLEAN" PrefixI False) (U1 :: Type -> Type))) :+: ((C1 (MetaCons "SMALL_MUT_ARR_PTRS_DIRTY" PrefixI False) (U1 :: Type -> Type) :+: C1 (MetaCons "SMALL_MUT_ARR_PTRS_FROZEN_DIRTY" PrefixI False) (U1 :: Type -> Type)) :+: (C1 (MetaCons "SMALL_MUT_ARR_PTRS_FROZEN_CLEAN" PrefixI False) (U1 :: Type -> Type) :+: (C1 (MetaCons "COMPACT_NFDATA" PrefixI False) (U1 :: Type -> Type) :+: C1 (MetaCons "N_CLOSURE_TYPES" PrefixI False) (U1 :: Type -> Type))))))))

data PrimType Source #

Constructors

Instances
Instance details

Defined in GHC.Exts.Heap.Closures

Methods

(==) :: PrimType -> PrimType -> Bool #

(/=) :: PrimType -> PrimType -> Bool #

Instance details

Defined in GHC.Exts.Heap.Closures

Instance details

Defined in GHC.Exts.Heap.Closures

Associated Types

type Rep PrimType :: Type -> Type #

Methods

from :: PrimType -> Rep PrimType x #

to :: Rep PrimType x -> PrimType #

Instance details

Defined in GHCi.Message

Methods

put :: PrimType -> Put #

get :: Get PrimType #

putList :: [PrimType] -> Put #

Instance details

Defined in GHC.Exts.Heap.Closures

type Rep PrimType = D1 (MetaData "PrimType" "GHC.Exts.Heap.Closures" "ghc-lib-0.20190204-8PmsVmG6Lfq3uCuHOLppjw" False) ((C1 (MetaCons "PInt" PrefixI False) (U1 :: Type -> Type) :+: (C1 (MetaCons "PWord" PrefixI False) (U1 :: Type -> Type) :+: C1 (MetaCons "PInt64" PrefixI False) (U1 :: Type -> Type))) :+: ((C1 (MetaCons "PWord64" PrefixI False) (U1 :: Type -> Type) :+: C1 (MetaCons "PAddr" PrefixI False) (U1 :: Type -> Type)) :+: (C1 (MetaCons "PFloat" PrefixI False) (U1 :: Type -> Type) :+: C1 (MetaCons "PDouble" PrefixI False) (U1 :: Type -> Type))))

class HasHeapRep (a :: TYPE rep) where Source #

Methods

getClosureData :: a -> IO Closure Source #

Instances
Instance details

Defined in GHC.Exts.Heap

Methods

getClosureData :: a -> IO Closure Source #

Instance details

Defined in GHC.Exts.Heap

Methods

getClosureData :: a -> IO Closure Source #

Int# ~ a => HasHeapRep (a :: TYPE IntRep) Source #
Instance details

Defined in GHC.Exts.Heap

Methods

getClosureData :: a -> IO Closure Source #

Instance details

Defined in GHC.Exts.Heap

Methods

getClosureData :: a -> IO Closure Source #

Instance details

Defined in GHC.Exts.Heap

Methods

getClosureData :: a -> IO Closure Source #

Instance details

Defined in GHC.Exts.Heap

Methods

getClosureData :: a -> IO Closure Source #

Instance details

Defined in GHC.Exts.Heap

Methods

getClosureData :: a -> IO Closure Source #

Instance details

Defined in GHC.Exts.Heap

Methods

getClosureData :: a -> IO Closure Source #

Instance details

Defined in GHC.Exts.Heap

Methods

getClosureData :: a -> IO Closure Source #

Info Table types

data StgInfoTable Source #

This is a somewhat faithful representation of an info table. See http://ghc.haskell.org/trac/ghc/browser/includes/rts/storage/InfoTables.h for more details on this data structure.

Constructors

Instances
Instance details

Defined in GHC.Exts.Heap.InfoTable.Types

Instance details

Defined in GHC.Exts.Heap.InfoTable.Types

Associated Types

type Rep StgInfoTable :: Type -> Type #

Instance details

Defined in GHCi.Message

type EntryFunPtr = FunPtr (Ptr () -> IO (Ptr ())) Source #

type HalfWord = Word32 Source #

type ItblCodes = Either [Word8] [Word32] Source #

itblSize :: Int Source #

Size in bytes of a standard InfoTable

peekItbl :: Ptr StgInfoTable -> IO StgInfoTable Source #

Read an InfoTable from the heap into a haskell type. WARNING: This code assumes it is passed a pointer to a "standard" info table. If tables_next_to_code is enabled, it will look 1 byte before the start for the entry field.

pokeItbl :: Ptr StgInfoTable -> StgInfoTable -> IO () Source #

Closure inspection

getBoxedClosureData :: Box -> IO Closure Source #

Like getClosureData , but taking a Box , so it is easier to work with.

allClosures :: GenClosure b -> [b] Source #

For generic code, this function returns all referenced closures.

Boxes

data Box Source #

An arbitrary Haskell value in a safe Box. The point is that even unevaluated thunks can safely be moved around inside the Box, and when required, e.g. in getBoxedClosureData, the function knows how far it has to evaluate the argument.

Constructors

Instances
Instance details

Defined in GHC.Exts.Heap.Closures

Methods

showsPrec :: Int -> Box -> ShowS #

show :: Box -> String #

showList :: [Box] -> ShowS #

asBox :: a -> Box Source #

This takes an arbitrary value and puts it into a box. Note that calls like

asBox (head list)

will put the thunk "head list" into the box, not the element at the head of the list. For that, use careful case expressions:

case list of x:_ -> asBox x

areBoxesEqual :: Box -> Box -> IO Bool Source #

Boxes can be compared, but this is not pure, as different heap objects can, after garbage collection, become the same object.

AltStyle によって変換されたページ (->オリジナル) /