0.9.18.5: Support DISASSEMBLE for interpreted functions.
authorBrian Downing <bdowning@lavos.net>
Thu, 26 Oct 2006 04:26:20 +0000 (04:26 +0000)
committerBrian Downing <bdowning@lavos.net>
Thu, 26 Oct 2006 04:26:20 +0000 (04:26 +0000)
  * 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
tests/interface.impure.lisp
version.lisp-expr

index 1c47cab..805c1c6 100644 (file)
 (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)
index 8b19a64..1914816 100644 (file)
 
 (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)))
 \f
 ;;; support for DESCRIBE tests
 (defstruct to-be-described a b)
index 160bbd4..4040c5c 100644 (file)
@@ -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"