returns T (reported by Anton Kazennikov)
* bug fix: the STORE-VALUE restart of CHECK-TYPE works correctly
with non-variable places
+ * improvement: the debugger will now also display local variables that
+ are only used once, for code compiled with a DEBUG optimization quality
+ of 2 or higher.
changes in sbcl-0.9.17 (0.9.99?) relative to sbcl-0.9.16:
* feature: weak hash tables, see MAKE-HASH-TABLE documentation
(ref (lvar-use (combination-fun call))))
(change-ref-leaf ref new-fun)
(setf (combination-kind call) :full)
+ ;; The internal variables of a transform are not going to be
+ ;; interesting to the debugger, so there's no sense in
+ ;; suppressing the substitution of variables with only one use
+ ;; (the extra variables can slow down constraint propagation).
+ (setf (combination-lexenv call)
+ (make-lexenv :default (combination-lexenv call)
+ :policy (process-optimize-decl
+ '(optimize
+ (preserve-single-use-debug-variables 0))
+ (lexenv-policy
+ (combination-lexenv call)))))
(locall-analyze-component *current-component*))))
(values))
leaf var)))
t)))))
((and (null (rest (leaf-refs var)))
+ ;; Don't substitute single-ref variables on high-debug /
+ ;; low speed, to improve the debugging experience.
+ (policy call (< preserve-single-use-debug-variables 3))
(substitute-single-use-lvar arg var)))
(t
(propagate-to-refs var (lvar-type arg))))))
(define-optimization-quality compute-debug-fun
debug
("no" "minimal" "yes" "yes"))
+
+(define-optimization-quality preserve-single-use-debug-variables
+ (if (and (>= debug 2)
+ (< speed 3))
+ 3
+ 0)
+ ("no" "no" "no" "yes"))
;;; 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.9.17.4"
+"0.9.17.5"