From 768d7b3a9bcdd648c51fb7fcecc3b4cdd8cbb816 Mon Sep 17 00:00:00 2001 From: "Tobias C. Rittweiler" Date: Sat, 20 Mar 2010 16:08:06 +0000 Subject: [PATCH] 1.0.36.35: More accurate WHO-CALLS / WHO-EXPANDS information * Fix for .34 which also affects WHO-EXPANDS; instead of pointing at the toplevel form, actually point into the right subform. * Bug due to typo: CDDR was used instead of CADDR. --- NEWS | 2 ++ src/compiler/xref.lisp | 22 +++++++++++----------- version.lisp-expr | 2 +- 3 files changed, 14 insertions(+), 12 deletions(-) diff --git a/NEWS b/NEWS index f94e99c..9dbda2a 100644 --- a/NEWS +++ b/NEWS @@ -59,6 +59,8 @@ changes relative to sbcl-1.0.36: &REST and &KEY in lambda-list caused miscompilation (lp#458354) * bug fix: WHO-CALLS information for source-transformed and compiler-macro expanded calls (lp#542174) + * bug fix: more accurate WHO-MACROEXPANDS information; point into rather + than just at toplevel form. changes in sbcl-1.0.36 relative to sbcl-1.0.35: * new feature: SB-EXT:TYPEXPAND-1, SB-EXT:TYPEXPAND, and diff --git a/src/compiler/xref.lisp b/src/compiler/xref.lisp index 2e8966f..7801e4e 100644 --- a/src/compiler/xref.lisp +++ b/src/compiler/xref.lisp @@ -31,17 +31,17 @@ ;; Properly record the deferred macroexpansion and source ;; transform information that's been stored in the block. (dolist (xref-data (block-xrefs block)) - (record-xref (car xref-data) - (cadr xref-data) - ;; We use the debug-name of the functional - ;; as an identifier. This works quite nicely, - ;; except for (fast/slow)-methods with non-symbol, - ;; non-number eql specializers, for which - ;; the debug-name doesn't map exactly - ;; to the fdefinition of the method. - functional - nil - (cddr xref-data))))) + (destructuring-bind (kind what path) xref-data + (record-xref kind what + ;; We use the debug-name of the functional + ;; as an identifier. This works quite nicely, + ;; except for (fast/slow)-methods with non-symbol, + ;; non-number eql specializers, for which + ;; the debug-name doesn't map exactly + ;; to the fdefinition of the method. + functional + nil + path))))) (call-with-block-external-functionals block #'handle-node))))) (defun call-with-block-external-functionals (block fun) diff --git a/version.lisp-expr b/version.lisp-expr index 064721f..9933ca1 100644 --- a/version.lisp-expr +++ b/version.lisp-expr @@ -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".) -"1.0.36.34" +"1.0.36.35" -- 1.7.10.4