Version 3 (modified by simonmar, 8 years ago) (diff)


GHC Commentary: The Word

The most important type in the runtime is StgWord, defined in includes/StgTypes.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):

An unsiged integral type of word size
A signed integral type of word size
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.

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