Skip to content
Snippets Groups Projects
Forked from cmucl / cmucl
Source project has a limited visibility.
  • rtoy's avatar
    12d78e25
    code/hash-new.lisp: · 12d78e25
    rtoy authored
    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.
    12d78e25
    History
    code/hash-new.lisp:
    rtoy authored
    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.