Which of the following PrimTyCons have a pointer-sized representations

Johan Tibell johan.tibell at gmail.com
Fri Dec 7 00:47:29 CET 2012


Hi,

As part of some work I'm doing I need to classify all PrimTyCons by
the size of their representation as fields*. I need to classify them
into two classes: pointer-sized (or smaller) and
larger-than-pointer-sized. I've managed to figure out a bunch of them
myself:

Pointer-sized:

addrPrimTyCon
arrayPrimTyCon
byteArrayPrimTyCon  -- Represented as a pointer to heap object
arrayArrayPrimTyCon  -- Represented as a pointer to heap object
charPrimTyCon
doublePrimTyCon  -- Only on 64-bit
floatPrimTyCon
intPrimTyCon
int32PrimTyCon
int64PrimTyCon  -- Only on 64-bit
mutableArrayPrimTyCon  -- Represented as a pointer to heap object
mutableByteArrayPrimTyCon  -- Represented as a pointer to heap object
mutableArrayArrayPrimTyCon  -- Represented as a pointer to heap object
wordPrimTyCon
word32PrimTyCon
word64PrimTyCon  -- Only on 64-bit

These ones I need help with:

bcoPrimTyCon
weakPrimTyCon
mVarPrimTyCon
tVarPrimTyCon
mutVarPrimTyCon
realWorldTyCon
stablePtrPrimTyCon
stableNamePrimTyCon
statePrimTyCon
threadIdPrimTyCon
anyTyCon
eqPrimTyCon
liftedTypeKindTyCon
unliftedTypeKindTyCon
openTypeKindTyCon
constraintKindTyCon
superKindTyCon
anyKindTyCon

I would appreciate any help classifying the bottom half. I will use
this to implement -funbox-strict-primitive-fields

* For example: while the StgArrWords heap object is a multi-byte
object its representation as a field e.g. in data T = C ByteArray# is
one pointer (to the StgArrWords heap object).

-- Johan



More information about the Glasgow-haskell-users mailing list