On Wed, Feb 16, 2000 at 09:21:18PM -0800, Martin Buchholz wrote:
I don't really understand the `free' bit yet.
The free bit is here for lrecord-lists sake. The idea is that some of
the of the lcrecords in the global all_lcrecord list are in practice
free and on a lrecord-list free list. The lrecord-lists have no quick
way to remove these records from the list when free_managed_lcrecord
is called, so they don't.
Actually, since the marker for the lcrecord-lists marks
(non-recursively) all the elements of its free list, the flag isn't
useful at sweep time. The only time when it is useful is when calling
disksave_object_finalization_1. And frankly, I'm not sure we really
need this finalization.
`basic_p' certainly is confusing. I imagine the `c' in
lcrecord
stands for `chained', so we should have `chained_p' instead of
`basic_p'.
Nothing actually _uses_ basic_p.
Make sure that SYMBOL_VALUE_MAGIC_P is as fast as possible, which
might be hard if magic values are multiple types. As I said before, I
think setting a bit in the symbol object itself is the way to go here
(and demoting magic values from Lisp_Object status). Allocated memory
that is never visible to the user, and always logically part of some
other object, should not be subject to gc. You want to keep the
objects examined by gc as small as possible. ... but after 21.2....
Beware, you're giving me ideas ;-)
OG.