Skip to content
Snippets Groups Projects
  1. Aug 18, 2006
    • rtoy's avatar
    • rtoy's avatar
      Add support for weak value, key-and-value, and key-or-value hash · e206ca4a
      rtoy authored
      tables.  Use boot-2006-08-1-cross to cross-compile.  During worldload,
      you'll get a restart.  Choose the CLOBBER-IT restart.
      
      bootfiles/19c/boot-2006-08-1-cross.lisp:
      o Cross-compile script to mark that a cross-compile is needed.
        Nothing fancy, just load up the example scripts.
      
      code/hash-new.lisp:
      o Update the allowed values for the weak-p slot of a hash table.
      o Change hash table printer to print out the test and weak style.
      o Update MAKE-HASH-TABLE to allow other values for :weak-p keyword arg
        and set the weak-p slot appropriately.
      o Produce an error if a weak key, key-and-value, or key-or-value table
        is created but the test is not EQ or EQL.
      
      compiler/ppc/parms.lisp:
      compiler/sparc/parms.lisp:
      o Add :KEY, :VALUE, :KEY-AND-VALUE, and :KEY-OR-VALUE symbols to the
        static symbols because C code needs them.
      
      lisp/gencgc.c:
      o Add necessary support to handle the new hash types.
      e206ca4a
  2. Aug 17, 2006
  3. Aug 16, 2006
    • rtoy's avatar
      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
  4. Aug 14, 2006
  5. Aug 12, 2006
  6. Aug 11, 2006
  7. Aug 10, 2006
  8. Aug 07, 2006
  9. Aug 04, 2006
    • rtoy's avatar
      Add a new function scan_weak_objects() to can weak pointers and weak · c3b3da1f
      rtoy authored
      (key) hash tables.  Then use it in several places where we need to
      scan the weak objects before closing the region.
      
      This fixes all of the problems with weak pointers and weak hash tables
      reported by Lynn Quam, cmucl-imp, 2006/07/04.
      
      Not 100% sure the solution is all correct, but it seems to be
      working.
      c3b3da1f
  10. Jul 21, 2006
  11. Jul 20, 2006
    • rtoy's avatar
      Include whether a hash-table is weak or not when describing a · 6d768c15
      rtoy authored
      hash-table.
      6d768c15
    • rtoy's avatar
      Port sbcl's changes to room to handle gencgc allocation better. · 05747b21
      rtoy authored
      lisp/gencgc.c:
      o Make last_free_page non-static so Lisp can see it.
      o Add get_page_table_info so Lisp can easily get at the flags and
        bytes_used slots of a page table entry.
      
      code/room.lisp:
      o Add gencgc-page-size constant.
      o Fix SPACE-BOUNDS for sparc and ppc with gencgc.  The
        dynamic-space-free-pointer is something different, and we really
        wanted the last_free_page.
      o Update MAP-ALLOCATED-OBJECTS to handle gencgc (from sbcl).
        Unallocated pages are skipped, as well as anything at the end of a
        page that is not in use.
      05747b21
  12. Jul 19, 2006
  13. Jul 18, 2006
  14. Jul 17, 2006
  15. Jul 14, 2006
  16. Jul 13, 2006
  17. Jul 12, 2006
    • rtoy's avatar
      The subtype_Names array had one extra slot, so that · 8932f44e
      rtoy authored
      closure_function_header and the following entries were not correct.
      
      Also, rename unused function header 1 and 2 to be "byte code function"
      and "byte code closure", respectively, since that's what internals.h
      says.
      
      We really need to generate this list during genesis or something
      instead of having to do this by hand!
      8932f44e
  18. Jul 10, 2006
Loading