From ebee2761543b208483fe763b1d329d5d0014b892 Mon Sep 17 00:00:00 2001 From: Brian Downing Date: Thu, 26 Oct 2006 04:26:20 +0000 Subject: [PATCH] 0.9.18.5: Support DISASSEMBLE for interpreted functions. * Support DISASSEMBLE for interpreted functions, by compiling (but not installing) the function beforehand. * Add tests to interface.impure.lisp for the above. --- src/compiler/target-disassem.lisp | 3 +++ tests/interface.impure.lisp | 13 +++++++++++++ version.lisp-expr | 2 +- 3 files changed, 17 insertions(+), 1 deletion(-) diff --git a/src/compiler/target-disassem.lisp b/src/compiler/target-disassem.lisp index 1c47cab..805c1c6 100644 --- a/src/compiler/target-disassem.lisp +++ b/src/compiler/target-disassem.lisp @@ -1497,6 +1497,9 @@ (defun valid-extended-function-designator-for-disassemble-p (thing) (cond ((legal-fun-name-p thing) (compiled-fun-or-lose (fdefinition thing) thing)) + #!+sb-eval + ((sb!eval:interpreted-function-p thing) + (compile nil thing)) ((functionp thing) thing) ((and (listp thing) diff --git a/tests/interface.impure.lisp b/tests/interface.impure.lisp index 8b19a64..1914816 100644 --- a/tests/interface.impure.lisp +++ b/tests/interface.impure.lisp @@ -34,6 +34,19 @@ (let ((x 1)) (defun disassemble-closure (y) (if y (setq x y) x))) (disassemble 'disassemble-closure) + +#+sb-eval +(progn + ;; Nor should it fail on interpreted functions + (let ((sb-ext:*evaluator-mode* :interpret)) + (eval `(defun disassemble-eval (x) x)) + (disassemble 'disassemble-eval)) + + ;; disassemble-eval should still be an interpreted function. + ;; clhs disassemble: "(If that function is an interpreted function, + ;; it is first compiled but the result of this implicit compilation + ;; is not installed.)" + (assert (sb-eval:interpreted-function-p #'disassemble-eval))) ;;; support for DESCRIBE tests (defstruct to-be-described a b) diff --git a/version.lisp-expr b/version.lisp-expr index 160bbd4..4040c5c 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".) -"0.9.18.4" +"0.9.18.5" -- 1.7.10.4