Commit 68165e85 authored by Juho Snellman's avatar Juho Snellman
Browse files

0.9.17.5:

        The debugger tends to not show all variables regardless of the
        optimization policy. Fix the most common reason for that happening.

        * When compiling with a high debug quality, don't do substitution for
          variables that are only used once.
        * Except for variables introduced in DEFTRANSFORM inline
          lambdas, since they're not going to very interesting for the
          debugger.
parent e541b374
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -5,6 +5,9 @@ changes in sbcl-0.9.18 (1.0.beta?) relative to sbcl-0.9.16:
    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
+14 −0
Original line number Diff line number Diff line
@@ -1126,6 +1126,17 @@
            (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))

@@ -1505,6 +1516,9 @@
                           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))))))
+7 −0
Original line number Diff line number Diff line
@@ -80,3 +80,10 @@
(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"))
+1 −1
Original line number Diff line number Diff line
@@ -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".)
"0.9.17.4"
"0.9.17.5"