Skip to content
Snippets Groups Projects
  1. Sep 28, 2007
    • rtoy's avatar
      Fix bug noted by Chisheng Huang, cmucl-imp, 25 Sep 2007. · 2dac2760
      rtoy authored
      MAPHASH needs to grab the kv-vector from the hash table for each
      iteration because the hash table may have been rehashed.  (This mostly
      reverts the code to the previous version, where this bug was
      introduced.)
      2dac2760
  2. Aug 18, 2006
    • rtoy's avatar
      code/hash-new.lisp: · eff841d2
      rtoy authored
      o Replace the magic value #x80000000 with +eq-based-hash-value+.
      
      lisp/gencgc.c:
      o Replace the magic value 0x80000000 with EQ_BASED_HASH_VALUE.
      o When freeing the hash entry, we forgot to reset the hash-vector
        entry to EQ_BASED_HASH_VALUE.
      eff841d2
    • 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
  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 11, 2006
    • rtoy's avatar
      Instead of using :empty to denote empty hash entries, use · 11b2eb73
      rtoy authored
      'lisp::empty-hash-entry instead.
      
      Not the best solution, since the user can still access this symbol,
      but being an implementation-specific, non-exported symbol, this seems
      acceptable.
      
      Should try to use the unbound marker instead.
      11b2eb73
  6. Jul 21, 2006
  7. Jun 30, 2006
  8. Oct 21, 2005
  9. Sep 30, 2005
  10. Sep 26, 2005
  11. Sep 08, 2004
  12. Jun 09, 2004
  13. May 17, 2004
  14. May 15, 2004
  15. May 14, 2004
    • rtoy's avatar
      Add support for storing the symbol hash into a slot in the symbol · 4d7bf80f
      rtoy authored
      itself.  Only for sparc currently.
      
      Doesn't lazily compute the symbol hash yet.  Simple test shows a 5%
      increase in compilation speed, despite making make-symbol
      significantly slower.
      
      
      	* src/code/hash-new.lisp (internal-sxhash): Use the symbol-hash
      	slot instead of computing the hash value.
      
      	* src/compiler/generic/new-genesis.lisp (allocate-symbol): Write
      	out the sxhash value of the symbol into the symbol-hash slot.
      
      	* src/compiler/globaldb.lisp (info-hash): Update to use the symbol
      	hash instead of computing the sxhash.
      
      	* src/code/symbol.lisp (make-symbol): Compute the symbol hash when
      	creating the symbol.
      
      	* src/compiler/sparc/cell.lisp ((symbol-hash)): Add vop to extract
      	out the symbol hash from a symbol.
      
      	* src/compiler/generic/objdef.lisp: Rename the unused slot to
      	hash, so we can make it the symbol hash.
      4d7bf80f
  16. Dec 01, 2003
  17. Sep 25, 2003
    • toy's avatar
      Implmement Pierre Mai's idea of adding 2 macros for setting *FEATURES* · 11faa4e0
      toy authored
      and *RUNTIME-FEATURES* and setting them appropriately as files are
      loaded so that recompiling CMUCL produces a result with the same set
      of features.  *RUNTIME-FEATURES* is a subset of *FEATURES* that is
      written out to internals.h so the C code can be compiled
      appropriately.
      
      A simple bootstrap with boot17 is needed.
      11faa4e0
  18. Jul 15, 2003
  19. Jun 18, 2003
    • gerd's avatar
      Remove package nicknames USER from COMMON-LISP-USER. Add a new · b4f2c7c7
      gerd authored
      	package COMMON-LISP which LISP uses, so that COMMON-LISP no longer
      	has the non-ANSI nickname LISP.
      
      	To bootstrap, use boot13.lisp as target:bootstrap.lisp with pmai's
      	build scripts, and do a full compile.
      
      	* src/bootfiles/18e/boot13.lisp: Change for all the package
      	changes.
      
      	* src/code/exports.lisp: New package common-lisp,
      	which lisp uses.
      
      	* src/tools/worldload.lisp:
      	* src/tools/setup.lisp: Use cl-user instead of user.
      	Use lisp:: instead of cl::.
      
      	* src/tools/worldcom.lisp:
      	* src/tools/snapshot-update.lisp:
      	* src/tools/pclcom.lisp:
      	* src/tools/mk-lisp:
      	* src/tools/hemcom.lisp:
      	* src/tools/config.lisp:
      	* src/tools/comcom.lisp:
      	* src/tools/clxcom.lisp:
      	* src/tools/clmcom.lisp:
      	* src/pcl/defsys.lisp:
      	* src/motif/lisp/initial.lisp:
      	* src/interface/initial.lisp:
      	* src/hemlock/lispmode.lisp (setup-lisp-mode):
      	Use cl-user instead of user.
      
      	* src/code/save.lisp (assert-user-package):
      	* src/code/print.lisp (%with-standard-io-syntax): Find
      	cl-user package instead of user.
      
      	* src/code/package.lisp (package-locks-init): Add lisp.
      	(package-init): Don't add user nickname to cl-user.
      
      	* src/code/ntrace.lisp (*trace-encapsulate-package-names*):
      	Add common-lisp.
      
      	* src/code/hash.lisp (toplevel):
      	* src/code/hash-new.lisp (toplevel): Use in-package :lisp
      	instead of :common-lisp.
      
      	* src/code/float-trap.lisp (sigfpe-handler): Don't
      	qualify floating-point-inexact with ext:.
      
      	* src/pcl/simple-streams/strategy.lisp (sc):
      	* src/pcl/simple-streams/null.lisp (null-read-char):
      	* src/pcl/simple-streams/internal.lisp (allocate-buffer)
      	(free-buffer):
      	* src/pcl/simple-streams/impl.lisp (%check, %read-line)
      	(%peek-char, %read-byte):
      	* src/pcl/simple-streams/file.lisp (open-file-stream)
      	(device-close):
      	* src/pcl/simple-streams/classes.lisp (simple-stream)
      	(device-close):
      	* src/pcl/macros.lisp (toplevel):
      	* src/pcl/braid.lisp (lisp::sxhash-instance):
      	* src/pcl/env.lisp (toplevel):
      	* src/compiler/generic/objdef.lisp (symbol-hash):
      	* src/code/stream.lisp (read-sequence, write-sequence):
      	* src/code/macros.lisp (defmacro, deftype):
      	* src/code/eval.lisp (interpreted-function):
      	* src/code/defstruct.lisp (defstruct):
      	* src/code/debug.lisp (debug-eval-print): Use lisp:: instead
      	of cl::.
      b4f2c7c7
  20. May 06, 2003
  21. Mar 27, 2003
    • gerd's avatar
      * code/hash-new.lisp (make-hash-table): Put warning about · 9e89e4e5
      gerd authored
      	creating weak tables in #-gencgc.
      
      	* lisp/gencgc.c (gc_assert): Ensure macro expansion is always a C
      	statement.
      	(struct hash_table): New struct.
      	(HASH_TABLE_SIZE, EQ_HASH): New macros.
      	(weak_hash_tables): New variable.
      	(survives_gc, u32_vector, free_hash_entry, record_for_rehashing)
      	(scav_hash_entries, scav_weak_entries, scan_weak_tables)
      	(scav_hash_vector): New functions.
      	(scav_vector): Removed.
      	(scav_weak_pointer, trans_weak_pointer, scan_weak_pointers):
      	Cleaned up.
      	(gc_init_tables): Use scav_hash_vector instead of scav_vector.
      	(garbage_collect_generation): Call scan_weak_tables.
      	(everywhere): Add casts, change format strings, etc. to placate
      	the compiler.
      
      	* lisp/FreeBSD-os.h: Fix a function prototype.
      9e89e4e5
  22. Mar 22, 2003
    • gerd's avatar
      * bootfiles/18e/boot[12].lisp: Bootstrap files for the lisp:class · a1e3ed93
      gerd authored
      = pcl:class part.  To get it booted from 18e, cross-compile using
      boot1.lisp as bootstrap.lisp in pmai's build scripts, then do a
      normal compile with boot2.lisp as bootstrap.lisp with the
      resulting Lisp.
      
      * code/byte-interp.lisp, code/defstruct.lisp, code/describe.lisp:
      * code/error.lisp, code/exports.lisp, code/hash-new.lisp:
      * code/hash.lisp, code/macros.lisp, code/misc.lisp:
      * code/package.lisp, code/pred.lisp, code/sharpm.lisp, code/type.lisp:
      * compiler/dump.lisp, compiler/fndb.lisp, compiler/globaldb.lisp:
      * compiler/proclaim.lisp, compiler/typetran.lisp, compiler/xref.lisp:
      * compiler/generic/primtype.lisp, compiler/generic/vm-type.lisp:
      Changes for to use kernel::class etc.
      
      * code/class.lisp (toplevel): Shadow class, built-in-class etc.
      (class): Give it conc-name %class-.
      (toplevel) [#+bootstrap-lisp-class=pcl-class]: Define old accessors.
      (everywhere): Use new class accessors.
      
      * compiler/generic/vm-fndb.lisp (%make-instance): Change from
      unsafe to flushable and movable.
      
      * code/ntrace.lisp (expand-trace, untrace): Changes for method
      tracing.
      
      * code/profile.lisp (profile, profile-all, unprofile): Method
      profiling.
      
      * pcl/*.text, pcl/bench.lisp, pcl/extensions.lisp:
      * pcl/fast-init.lisp, pcl/precom1.lisp, pcl/precom4.lisp:
      * pcl/structure-class.lisp, pcl/user-instances.lisp:
      Removed.
      
      * tools/pclcom.lisp: Changes for my PCL and lisp:class =
      pcl::class.
      a1e3ed93
  23. Mar 10, 2003
  24. Nov 28, 2002
    • pmai's avatar
      Entomotomy Bug: sxhash-on-pcl-instances-returns-42 · b3ef69ef
      pmai authored
      This commit is a slight rewrite of the previously committed fix, which
      sxhash-instance work even when handed non-PCL instances and
      funcallable-instances, while enabling the use of stored hash-codes for
      all PCL funcallable-instances.
      b3ef69ef
  25. Nov 21, 2002
    • pmai's avatar
      Entomotomy Bug: sxhash-on-pcl-instances-returns-42 · d57b4f75
      pmai authored
      Committed a slightly reworked patch by Gerd Moellmann that introduces new
      hash-code slots into (funcallable-)standard-instances, which get initialized
      to persistent, sequential numbers upon instance creation, thus providing
      better sxhash/equal hashing.
      d57b4f75
  26. Jul 10, 2002
    • toy's avatar
      From Eric Marsden: · 6e9a215f
      toy authored
       * (pcl:class-precedence-list (find-class 'null)) should have symbol
         occurring before list, as per CLHS.
      
       * minor changes to certain error conditions: eg trying to set
         DEFAULT-DIRECTORY to a non-existent directory should raise a
         condition of type FILE-ERROR. (Some of these changes are from
         Alexey Dejneka, via SBCL).
      
       * cleanup of some Hemlock-related symbols that shouldn't be exported
         when :no-hemlock is defined.
      6e9a215f
  27. Mar 30, 2001
    • pw's avatar
      From Tim Moore · a5b6497a
      pw authored
      internal-sxhash doesn't deal correctly with strings that have fill
      pointers; consequently, equal hash tables don't work correctly either.
      >From 18c:
      *(defvar foo (make-array 32 :element-type 'base-char :adjustable t
      :fill-pointer 7))
      FOO
      * (setf (subseq foo 0) "typedef")
      "typedef"
      * (sxhash foo)
      182883518
      * (sxhash "typedef")
      194663162
      * (defvar h (make-hash-table :test #'equal))
      H
      * (setf (gethash foo h) 'bar)
      BAR
      * (gethash "typedef" h)
      NIL
      NIL
      
      Attached is a fix.
      Tim
      a5b6497a
  28. Nov 04, 2000
  29. Jul 06, 2000
    • dtc's avatar
      Reworking of the values-type system to overcome a number of inconsistencies · daf333f4
      dtc authored
      causing problems:
      
      o Redefine coerce-to-values to convert a single value type into (values type),
        rather than the former definition (values type &rest t). A single value
        type such as fixnum is now equivalent to (values fixnum). Values-type-union
        and values-type-intersection will canonicalise values types with a
        single value such as (values fixnum) back to a single value type
        such as fixnum.
      
      o Now when the compiler makes assertions for the first value of
        continuations that may be generating multiple values it asserts the
        type as (values type &rest t), or as (value &optional type &rest t) if
        it is not sure that the continuation does generate a value.
      
      o Enhance the type check generation to better handle the now common
        values types with optional and rest arguments. Add the new function
        Values-types-asserted which converts asserted optional and rest
        arguments to required arguments that have been proven to be delivered,
        Thus an assertion such as (values &optional fixnum &rest t) will
        generate a fixnum type check if the proven type if (values t).
      
      o The compiler is now far more likely to pickup attempts to use an
        assertion to select a subset of values. For example
        (the (values fixnum) (values x y)) will generated a compiler warning.
      
      o Update single values type assertions where appropriate to clarify that
        the received values may be optional or that multiple values may be
        received. For example, a macro argument which had been asserted to be
        a list via (the list ,...) would now be asserted to be
        (the (values &optional list &rest t)) etc.
      
      o Have the IR1 translator for THE convert single value types into
        (values &optional type &rest t) so that code such as
        (the fixnum (values x y)) will still work acceptably. This does not
        restrict the possible type assertions as the values types may be used
        and are not modified.
      daf333f4
    • dtc's avatar
      When asserting a single value from truncate etc, rather than · b4693ec2
      dtc authored
      using a single value type assertion following values
      '(the index (values ...)), use a multiple values types assertion
      '(the (values index t) ...), which is simpler for the compiler.
      b4693ec2
    • dtc's avatar
      Clarify an assertion on the result of round, firstly receiving the · cba07466
      dtc authored
      only the first value.
      cba07466
  30. Jan 16, 2000
  31. Jan 15, 2000
  32. Jan 14, 2000
  33. Jan 13, 2000
  34. Dec 04, 1999
Loading