[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Weak pointers and GC
I wrote:
> I have a question about something that's not specified in T that people on
> T-DISCUSSION might want to think about. The question is what GC does to
> entries in the weak pointer table (ie, the OBJECT-HASH table) that are NOT
> GC'ed. Objects in the table that are GC'ed obviously go away (that's the
> whole point of the table).
>
> As of now (T3.1) it seems that the table is cleared upon GC. For example,
> when I enter
>
> (let ((x (object-unhash 69))) (gc))
>
> the object that was in (OBJECT-UNHASH 69) will not be GC'ed (because it is
> referenced in the current lexical context by X), but it will no longer be
> accessable through OBJECT-UNHASH.
David Kranz wrote:
>Your explanation is not correct. You are calling GC tail-recursively and so
>the environment containing x is not seen by the gc. Try:
>
> (let ((x (object-unhash 69))) (gc) t)
Yep, that works. I guess the compiler was too smart for my own good.
Sorry for the premature post.
Bruce Krulwich