[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Gcl-devel] Re: dynamic-extent make-list initialization error?
From: |
Camm Maguire |
Subject: |
[Gcl-devel] Re: dynamic-extent make-list initialization error? |
Date: |
13 Dec 2005 18:33:13 -0500 |
User-agent: |
Gnus/5.09 (Gnus v5.9.0) Emacs/21.2 |
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 <address@hidden> 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 address@hidden
==========================================================================
"The earth is but one country, and mankind its citizens." -- Baha'u'llah