Ah, the (c)ontent of the (d)ecrement part of the (r)egister which holds this value. :)
> Assume that a pointer references the head of a character VList and a new character element must be added. The sub-block base is recovered from the pointer by masking out the lower 4 bits. The data type size is recovered from the Element Type field, in this case a one byte character. The offset from the base to the pointer is calculated if this is less than 11 then the list pointer is incremented by one and the new element stored at the referenced location.
This is only possible if the pointer is not shared with anything else in the program.
After you've done the above operation, you still have the same pointer that references the head of the original VList, and the incremented pointer that references the extended list. If you hand something the original unextended VList pointer, and it tries to cons something onto the front using the same algorithm, it will overwrite that item.
You need some bits in there to indicate when a copy-on-write needs to be done to to avoid surprising effects through sharing.