Thanks, this clears it up! The only thing I don't get is that it your hons bodies are on the C stack, they should not be getting marked or freed.
Hmmm. Take care, Robert Boyer <[EMAIL PROTECTED]> writes: > > I'm not sure I understand the logic above -- might you elaborate if you > > have time? > > Consider: > > (defun foo () > (let* ((x (cons 1 2)) > (i (si::address x)) > (d (si::address (cdr x)))) > (print (eq (si::nani i) x)) > (setq x nil) > ; (si::gbc t) > (equal d (si::address (cdr (si::nani i)))))) > > (foo) returns T, but uncommment out the (si::gbc t), and (foo) returns NIL > because the cdr has been marked free. > > Hope this helps. If not, please let me know. We are just taking advantage > of si::address and si::nani to tell that a cons has, by the just finished > gbc, just been freed, so that we know now to drop any (secret) association > between the address of that cons and some other object, in our case a > hashtable. It's just a variation on the concept "weak", I think. > > > -- Camm Maguire [EMAIL PROTECTED] ========================================================================== "The earth is but one country, and mankind its citizens." -- Baha'u'llah _______________________________________________ Gcl-devel mailing list [email protected] http://lists.gnu.org/mailman/listinfo/gcl-devel
