changes relative to sbcl-1.1.8:
* enchancement: disassemble now annotates some previously missing static
functions, like LENGTH.
+ * bug fix: problems with NCONC type derivation (reported by Jerry James).
* optimization: calls to static functions on x86-64 use less instructions.
* optimization: compute encode-universal-time at compile time when possible.
* optimization: when referencing internal functions as #'x, don't go through
while next
do
(let ((lvar-type (lvar-type arg)))
- (unless (or (csubtypep list-type lvar-type)
- (csubtypep lvar-type list-type)
- ;; Check for NIL specifically, because
- ;; SYMBOL or ATOM won't satisfie the above
+ (unless (or (csubtypep cons-type lvar-type)
(csubtypep null-type lvar-type))
(assert-lvar-type arg list-type
(lexenv-policy *lexenv*))
(lambda (x y) (nconc x (the list y) x)) t
(lambda (x y) (nconc (the atom x) y)) t
(lambda (x y) (nconc (the (or null (eql 10)) x) y)) t
+ (lambda (x y) (nconc (the (or cons vector) x) y)) t
+ (lambda (x y) (nconc (the sequence x) y)) t
(lambda (x y) (print (length y)) (append x y)) sequence)))
(loop for (function result-type) on test-cases by #'cddr
do (assert (equal (car (cdaddr (sb-kernel:%simple-fun-type