[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Unforwarding cells
Date: Fri, 28 Aug 87 14:33 PDT
From: John Batali <Batali@SPAR-20.ARPA>
What is the proper way to make a cell stop forwarding to another cell?
I read from page 22 of volume 8:
To forward one arbitrary cell to another, given two locatives do
(sys:%p-store-tag-and-pointer locative1
sys:dtp-one-q-forward locative2)
This works fine, but there is no indication anywhere of how to make
locative1 not forward anymore. The following works, and provides error
checking if I try to read from the location without putting something
else there:
(sys:%p-store-tag-and-pointer locative1 sys:dtp-null 0)
Will this cause me grief later? Is there an official way to do this?
That's basically a fine way to do it. We should document it.
There is one bug in both of your calls to sys:%p-store-tag-and-pointer,
namely you didn't worry about the cdr code (in fact you clobber it to zero).
It would be much safer to preserve the cdr code, as follows:
(sys:%p-store-cdr-type-and-pointer locative1 (sys:%p-cdr-code locative1)
sys:dtp-one-q-forward locative2)
(sys:%p-store-cdr-type-and-pointer locative1 (sys:%p-cdr-code locative1)
sys:dtp-null 0)