gcl-devel
[Top][All Lists]
Advanced

[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




reply via email to

[Prev in Thread] Current Thread [Next in Thread]