wiki:Commentary/Rts/Word

Version 5 (modified by simonmar, 19 months ago) (diff)

--

GHC Commentary: The Word

The most important type in the runtime is StgWord, defined in includes/stg/Types.h. A word is defined to be the same size as a pointer on the current platform. All these types are interconvertible without losing information, and have the same size (as reported by sizeof):

StgWord
An unsiged integral type of word size
StgInt
A signed integral type of word size
StgPtr
Pointer to StgWord

The word is the basic unit of allocation in GHC: the heap and stack are both allocated in units of a word. Throughout the runtime we often use sizes that are in units of words, so as to abstract away from the real word size of the underlying architecture.

The StgWord type is also useful for storing the size of a memory object, since an StgWord is guaranteed to at least span the range of addressable memory. It is rather like size_t in this respect, although we prefer to use StgWord in the RTS sources.

C-- only understands units of bytes, so we have various macros in source:includes/Cmm.h to make manipulating things in units of words easier in .cmm files.