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

Reply via email to