Update of /cvsroot/sbcl/sbcl/src/code
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv6681/src/code
Modified Files:
filesys.lisp hash-table.lisp target-hash-table.lisp
early-fasl.lisp
Log Message:
0.9.3.60:
* Bump +FASL-FILE-VERSION+.
* Add a couple of useful restarts for ENSURE-DIRECTORIES-EXIST.
(patch from sbcl-devel "Proposed patch to ensure-directories-exist"
2005-06-06 by Alan Shields)
* Fix empty hash slot marker on 64-bit systems.
(patch from sbcl-devel "Bug in hash tables on 64-bit systems and fix"
2005-08-11 by Lutz Euler)
* Clear the signal mask in the child process after run-program
has forked. (patch from sbcl-devel "Blocked signals and run-program"
2005-08-14 by Benedikt Schmidt).
Index: filesys.lisp
===================================================================
RCS file: /cvsroot/sbcl/sbcl/src/code/filesys.lisp,v
retrieving revision 1.50
retrieving revision 1.51
diff -u -d -r1.50 -r1.51
--- filesys.lisp 14 Jul 2005 16:30:34 -0000 1.50
+++ filesys.lisp 16 Aug 2005 17:09:49 -0000 1.51
@@ -1049,10 +1049,16 @@
namestring))
(sb!unix:unix-mkdir namestring mode)
(unless (probe-file namestring)
- (error 'simple-file-error
- :pathname pathspec
- :format-control "can't create directory ~A"
- :format-arguments (list namestring)))
+ (restart-case (error 'simple-file-error
+ :pathname pathspec
+ :format-control "can't create directory ~A"
+ :format-arguments (list namestring))
+ (retry ()
+ :report "Retry directory creation."
+ (ensure-directories-exist pathspec :verbose verbose :mode mode))
+ (continue ()
+ :report "Continue as if directory creation was successful."
+ nil)))
(setf created-p t)))))
(values pathname created-p))))
Index: hash-table.lisp
===================================================================
RCS file: /cvsroot/sbcl/sbcl/src/code/hash-table.lisp,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -d -r1.9 -r1.10
--- hash-table.lisp 5 Aug 2005 13:32:14 -0000 1.9
+++ hash-table.lisp 16 Aug 2005 17:09:49 -0000 1.10
@@ -66,10 +66,20 @@
;; This table parallels the KV table, and can be used to store the
;; hash associated with the key, saving recalculation. Could be
;; useful for EQL, and EQUAL hash tables. This table is not needed
- ;; for EQ hash tables, and when present the value of #x80000000
- ;; represents EQ-based hashing on the respective key.
+ ;; for EQ hash tables, and when present the value of
+ ;; +MAGIC-HASH-VECTOR-VALUE+ represents EQ-based hashing on the
+ ;; respective key.
(hash-vector nil :type (or null (simple-array (unsigned-byte
#.sb!vm:n-word-bits) (*)))))
+
+;; as explained by pmai on openprojects #lisp IRC 2002-07-30: #x80000000
+;; is bigger than any possible nonEQ hash value, and thus indicates an
+;; empty slot; and EQ hash tables don't use HASH-TABLE-HASH-VECTOR.
+;; The previous sentence was written when SBCL was 32-bit only. The value
+;; now depends on the word size. It is propagated to C in genesis because
+;; the generational garbage collector needs to know it.
+(defconstant +magic-hash-vector-value+ (ash 1 (1- sb!vm:n-word-bits)))
+
(defmacro-mundanely with-hash-table-iterator ((function hash-table) &body body)
#!+sb-doc
Index: target-hash-table.lisp
===================================================================
RCS file: /cvsroot/sbcl/sbcl/src/code/target-hash-table.lisp,v
retrieving revision 1.23
retrieving revision 1.24
diff -u -d -r1.23 -r1.24
--- target-hash-table.lisp 9 Aug 2005 13:57:49 -0000 1.23
+++ target-hash-table.lisp 16 Aug 2005 17:09:49 -0000 1.24
@@ -82,10 +82,6 @@
(defconstant +min-hash-table-size+ 16)
(defconstant +min-hash-table-rehash-threshold+ (float 1/16 1.0))
-;; as explained by pmai on openprojects #lisp IRC 2002-07-30: #x80000000
-;; is bigger than any possible nonEQ hash value, and thus indicates an
-;; empty slot; and EQ hash tables don't use HASH-TABLE-HASH-VECTOR
-(defconstant +magic-hash-vector-value+ #x80000000)
(defun make-hash-table (&key (test 'eql)
(size +min-hash-table-size+)
Index: early-fasl.lisp
===================================================================
RCS file: /cvsroot/sbcl/sbcl/src/code/early-fasl.lisp,v
retrieving revision 1.56
retrieving revision 1.57
diff -u -d -r1.56 -r1.57
--- early-fasl.lisp 14 Jul 2005 16:30:32 -0000 1.56
+++ early-fasl.lisp 16 Aug 2005 17:09:49 -0000 1.57
@@ -76,7 +76,7 @@
;;; versions which break binary compatibility. But it certainly should
;;; be incremented for release versions which break binary
;;; compatibility.
-(def!constant +fasl-file-version+ 57)
+(def!constant +fasl-file-version+ 58)
;;; (record of versions before 2003 deleted in 2003-04-26/0.pre8.107 or so)
;;; 38: (2003-01-05) changed names of internal SORT machinery
;;; 39: (2003-02-20) in 0.7.12.1 a slot was added to
@@ -122,6 +122,7 @@
;;; 56: (2005-05-22) Something between 0.9.0.1 and 0.9.0.14. My money is
;;; on 0.9.0.6 (MORE CASE CONSISTENCY).
;;; 57: (2005-06-12) Raw slot rearrangement in 0.9.1.38
+;;; 58: (2005-08-16) Multiple incompatible changes between 0.9.3 and 0.9.3.60
;;; the conventional file extension for our fasl files
(declaim (type simple-string *fasl-file-type*))
|