[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