Optimize MAKE-ARRAY on unknown element-type.
[sbcl.git] / src / code / xset.lisp
index 38a9a2b..4c65e71 100644 (file)
@@ -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)
         (size (xset-list-size xset)))
     (if (listp data)
         (if (< size +xset-list-size-limit+)
-            (unless (member elt data :test #'eq)
+            (unless (member elt data :test #'eql)
               (setf (xset-list-size xset) (1+ size)
                     (xset-data xset) (cons elt data)))
-            (let ((table (make-hash-table :size (* 2 size) :test #'eq)))
+            (let ((table (make-hash-table :size (* 2 size) :test #'eql)))
               (setf (gethash elt table) t)
               (dolist (x data)
                 (setf (gethash x table) t))
@@ -82,7 +82,7 @@
 (defun xset-member-p (elt xset)
   (let ((data (xset-data xset)))
     (if (listp data)
-        (member elt data :test #'eq)
+        (member elt data :test #'eql)
         (gethash elt data))))
 
 (defun xset-members (xset)
       (let ((data (xset-data lookup)))
         (map-xset (if (listp data)
                       (lambda (elt)
-                        (when (member elt data :test #'eq)
+                        (when (member elt data :test #'eql)
                           (add-to-xset elt intersection)))
                       (lambda (elt)
                         (when (gethash elt data)
       (map-xset
        (if (listp data)
            (lambda (elt)
-             (unless (member elt data :test #'eq)
+             (unless (member elt data :test #'eql)
                (return-from xset-subset-p nil)))
            (lambda (elt)
              (unless (gethash elt data)