ghc-7.10.2: The GHC API

Safe HaskellNone
LanguageHaskell2010

SMRep

Contents

Synopsis

Words and bytes

type WordOff = Int Source

Word offset, or word count

type ByteOff = Int Source

Byte offset, or byte count

wordsToBytes :: Num a => DynFlags -> a -> a Source

Convert the given number of words to a number of bytes.

This function morally has type WordOff -> ByteOff, but uses Num a to allow for overloading.

bytesToWordsRoundUp :: DynFlags -> ByteOff -> WordOff Source

First round the given byte count up to a multiple of the machine's word size and then convert the result to words.

roundUpToWords :: DynFlags -> ByteOff -> ByteOff Source

Round up the given byte count to the next byte count that's a multiple of the machine's word size.

Closure repesentation

data SMRep Source

A description of the layout of a closure. Corresponds directly to the closure types in includesrtsstorage/ClosureTypes.h.

Instances

type IsStatic = Bool Source

True = This is a static closure. Affects how we garbage-collect it. Static closure have an extra static link field at the end.

data ClosureTypeInfo Source

Constructors

Constr ConstrTag ConstrDescription 
Fun FunArity ArgDescr 
Thunk 
ThunkSelector SelectorOffset 
BlackHole 
IndStatic 

Construction

Predicates

Size-related things

heapClosureSizeW :: DynFlags -> SMRep -> WordOff Source

The total size of the closure, in words.

fixedHdrSizeW :: DynFlags -> WordOff Source

Size of a closure header (StgHeader in includesrtsstorage/Closures.h)

profHdrSize :: DynFlags -> WordOff Source

Size of the profiling part of a closure header (StgProfHeader in includesrtsstorage/Closures.h)

RTS closure types

rtsClosureType :: SMRep -> Int Source

Derives the RTS closure type from an SMRep

Arrays

card :: DynFlags -> Int -> Int Source

The byte offset into the card table of the card for a given element

cardRoundUp :: DynFlags -> Int -> Int Source

Convert a number of elements to a number of cards, rounding up

cardTableSizeB :: DynFlags -> Int -> ByteOff Source

The size of a card table, in bytes

cardTableSizeW :: DynFlags -> Int -> WordOff Source

The size of a card table, in words

Operations over [Word8] strings that don't belong here