[nhc-users] Data nodes
Malcolm Wallace
Malcolm.Wallace at cs.york.ac.uk
Thu Mar 3 09:29:14 EST 2005
Hello Arunkumar,
> CONSTR(e, s, ws): This is used to construct header for the data nodes
> which contain more than one constructors e.g List, Tree etc
>
> CONSTRW(s, e) and CONSTRP(s, e) : Are used to construct header for
> data nodes which contain single constructor e.g Pair.
No, that is not correct.
CONSTR(c,s,ws)
Construct a tag (i.e. a header for a data node) where there is
a mixture of pointers and basic values amongst the data items:
c = number of the constructor
s = size = total number of data items in the node
ws = number of data items which are pointers to
other nodes
The number of non-pointers is therefore (s - ws).
The complete node has layout:
| tag | pointers | non-pointers |
CONSTRW(s,e)
Construct a tag for a node containing a single basic data item
(non-pointer), but it could be larger than a single word,
e.g. Integer, Double.
s = size = number of words occupied by the node
e = extra information, a 2-bit flag used e.g. to indicate
that a GMP Integer is negative.
CONSTRP(s,e)
Construct a tag for a value where there is a single constructor,
and all the data items contained in it are pointers, e.g. Array.
Used only by hand-written code - never generated by the compiler.
s = size = number of pointers
e = extra information, currently unused.
I hope this helps,
Malcolm
More information about the Nhc-users
mailing list