all of the arguments are circular is probably desireable).
213: "Sequence functions and type checking"
- a. (fixed in 0.8.4.36)
b. MAP, when given a type argument that is SUBTYPEP LIST, does not
check that it will return a sequence of the given type. Fixing
it along the same lines as the others (cf. work done around
(probably related to the bug 280.)
-313: "source-transforms are Lisp-1"
- (fixed in 0.8.10.2)
-
314: "LOOP :INITIALLY clauses and scope of initializers"
reported by Bruno Haible sbcl-devel "various SBCL bugs" from CLISP
test suite, originally by Thomas F. Burdick.
** print/read consistency on floats is now orders of magnitude
more likely. (thanks also to Bruno Haible for a similar report
and discussions)
-
+ ** removed stack cleaning in the cleanup part of UNWIND-PROTECT.
+
planned incompatible changes in 0.8.x:
* (not done yet, but planned:) When the profiling interface settles
down, it might impact TRACE. They both encapsulate functions, and
(type . ,(type-specifier ; XXX local type
(info :variable :type var)))))))))
+(declaim (ftype (sfunction (symbol &optional (or null lexenv)) t)
+ declaration-information))
+(defun declaration-information (declaration-name &optional env)
+ (let ((policy (sb-c::lexenv-policy (or env (make-null-lexenv)))))
+ (case declaration-name
+ (optimize (collect ((res))
+ (dolist (name sb-c::*policy-qualities*)
+ (res (list name (cdr (assoc name policy)))))
+ (loop for (name . nil) in sb-c::*policy-dependent-qualities*
+ do (res (list name (sb-c::policy-quality policy name))))
+ (res)))
+ (t (error "Unsupported declaration ~S." declaration-name)))))
+
(defun parse-macro (name lambda-list body &optional env)
(declare (ignore env))
(with-unique-names (whole environment)
# Or, if you can set up the files somewhere shared (with NFS, AFS, or
# whatever) between the host machine and the target machine, the basic
# procedure above should still work, but you can skip the "copy" steps.
-sh make-host-1.sh || exit 1
-sh make-target-1.sh || exit 1
-sh make-host-2.sh || exit 1
-sh make-target-2.sh || exit 1
-sh make-target-contrib.sh || exit 1
+time sh make-host-1.sh || exit 1
+time sh make-target-1.sh || exit 1
+time sh make-host-2.sh || exit 1
+time sh make-target-2.sh || exit 1
+time sh make-target-contrib.sh || exit 1
# Sometimes people used to see the "No tests failed." output from the last
# DEFTEST in contrib self-tests and think that's all that is. So...
;; We cannot delete unused UVLs during NLX, so all UVLs live at
;; ENTRY will be actually live at NLE.
+ ;;
+ ;; BUT, UNWIND-PROTECTor is called in the environment, which has
+ ;; nothing in common with the environment of its entry. So we
+ ;; fictively compute its stack from the containing cleanups, but
+ ;; do not propagate additional LVARs from the entry, thus
+ ;; preveting bogus stack cleanings.
+ ;;
+ ;; TODO: Insert a check that no values are discarded in UWP. Or,
+ ;; maybe, we just don't need to create NLX-ENTRY for UWP?
(when (and (eq (component-head (block-component block))
(first (block-pred block)))
(not (bind-p (block-start-node block))))
- (let* ((entry-block (nle-block-entry-block block))
- (entry-stack (ir2-block-start-stack (block-info entry-block))))
- (setq start (merge-uvl-live-sets start entry-stack))))
+ (let* ((nlx-info (nle-block-nlx-info block))
+ (cleanup (nlx-info-cleanup nlx-info)))
+ (unless (eq (cleanup-kind cleanup) :unwind-protect)
+ (let* ((entry-block (node-block (cleanup-mess-up cleanup)))
+ (entry-stack (ir2-block-start-stack (block-info entry-block))))
+ (setq start (merge-uvl-live-sets start entry-stack))))))
(when *check-consistency*
(aver (subsetp original-start start)))
(assert (equal (non-continuous-stack-test t) '(11 12 13 14 1 2 3 4 5 6 7 8 :ext)))
(assert (equal (non-continuous-stack-test nil) '(:b1 :b2 :b3 :b4 :a1 :a2 :a3 :a4 :int)))
+;;; MISC.362: environment of UNWIND-PROTECTor is different from that
+;;; if ENTRY.
+(assert (equal (multiple-value-list (funcall
+ (compile
+ nil
+ '(lambda (b g h)
+ (declare (optimize (speed 3) (space 3) (safety 2)
+ (debug 2) (compilation-speed 3)))
+ (catch 'ct5
+ (unwind-protect
+ (labels ((%f15 (f15-1 f15-2 f15-3)
+ (rational (throw 'ct5 0))))
+ (%f15 0
+ (apply #'%f15
+ 0
+ h
+ (progn
+ (progv '(*s2* *s5*) (list 0 (%f15 0 g 0)) b)
+ 0)
+ nil)
+ 0))
+ (common-lisp:handler-case 0)))))
+ 1 2 3))
+ '(0)))
+
\f
;;; MISC.275
(assert
;;; 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".)
-"0.8.10.24"
+"0.8.10.25"