From cdb975feaadf1dc5554396b8f399708bc9b6f90d Mon Sep 17 00:00:00 2001 From: Nikodemus Siivola Date: Thu, 5 Jun 2008 16:55:09 +0000 Subject: [PATCH] 1.0.17.29: fix build * I'll adviced last minute deletion of LIST-TO-HASH-TABLE-THRESHOLD: it was also used by the fopcompiler: use XSET there as well, and bump up the corresponding threshold in XSET a bit. --- src/code/xset.lisp | 2 +- src/compiler/fopcompile.lisp | 25 ++++--------------------- version.lisp-expr | 2 +- 3 files changed, 6 insertions(+), 23 deletions(-) diff --git a/src/code/xset.lisp b/src/code/xset.lisp index dfdf182..4c65e71 100644 --- a/src/code/xset.lisp +++ b/src/code/xset.lisp @@ -51,7 +51,7 @@ data))) nil) -(defconstant +xset-list-size-limit+ 12) +(defconstant +xset-list-size-limit+ 24) ;;; Checks that the element is not in the set yet. (defun add-to-xset (elt xset) diff --git a/src/compiler/fopcompile.lisp b/src/compiler/fopcompile.lisp index 1a33385..16f9daf 100644 --- a/src/compiler/fopcompile.lisp +++ b/src/compiler/fopcompile.lisp @@ -182,11 +182,7 @@ ;;; Check that a literal form is fopcompilable. It would not for example ;;; when the form contains structures with funny MAKE-LOAD-FORMS. (defun constant-fopcompilable-p (constant) - (let ((things-processed nil) - (count 0)) - (declare (type (or list hash-table) things-processed) - (type (integer 0 #.(1+ list-to-hash-table-threshold)) count) - (inline member)) + (let ((xset (alloc-xset))) (labels ((grovel (value) ;; Unless VALUE is an object which which obviously ;; can't contain other objects @@ -196,22 +192,9 @@ number character string)) - (etypecase things-processed - (list - (when (member value things-processed :test #'eq) - (return-from grovel nil)) - (push value things-processed) - (incf count) - (when (> count list-to-hash-table-threshold) - (let ((things things-processed)) - (setf things-processed - (make-hash-table :test 'eq)) - (dolist (thing things) - (setf (gethash thing things-processed) t))))) - (hash-table - (when (gethash value things-processed) - (return-from grovel nil)) - (setf (gethash value things-processed) t))) + (if (xset-member-p value xset) + (return-from grovel nil) + (add-to-xset value xset)) (typecase value (cons (grovel (car value)) diff --git a/version.lisp-expr b/version.lisp-expr index f365cc5..fe6c37c 100644 --- a/version.lisp-expr +++ b/version.lisp-expr @@ -17,4 +17,4 @@ ;;; checkins which aren't released. (And occasionally for internal ;;; versions, especially for internal versions off the main CVS ;;; branch, it gets hairier, e.g. "0.pre7.14.flaky4.13".) -"1.0.17.28" +"1.0.17.29" -- 1.7.10.4