code/hash-new.lisp:
o Add a new slot to the hash-table structure for GC to use for linking weak tables together. (Previously we used the weak-p slot for this. Let's make it explicit, now. Plus, this allows us to use weak-p to indicate other types of weak tables, should they be implemented.) lisp/gencgc.c: o Update defstruct appropriately. o Use the new next-weak-table slot to chain the weak tables together. o Previously we scanned the weak tables in several places in the code. However, this scanning also removed entries. I don't think we want that because later scans could make a key valid. Thus: - Change scav_hash_entries so that it doesn't remove a hash-table entry unless told to. - Add new function to scavenge weak tables without removing a weak entry. - Adjust scan_weak_tables to remove weak entries. NOTE: When building, you'll be asked twice about the hash-table structure changing size. Just select the CLOBBER-IT restart in both cases.
Loading
Please register or sign in to comment