emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[nongnu] elpa/slime 32f5652d6a 15/43: sbcl: Improve inspection of functi


From: ELPA Syncer
Subject: [nongnu] elpa/slime 32f5652d6a 15/43: sbcl: Improve inspection of functions and code components.
Date: Thu, 28 Dec 2023 22:00:29 -0500 (EST)

branch: elpa/slime
commit 32f5652d6a976f68e7cf47b61d7d0e2764b68aae
Author: Charles Zhang <czhang@hrl.com>
Commit: Luís Oliveira <luismbo@gmail.com>

    sbcl: Improve inspection of functions and code components.
    
    * Restore display of entry points for code components.
    * Show disassembly for simple funs.
---
 swank/sbcl.lisp | 39 +++++++++++++++++++++++----------------
 1 file changed, 23 insertions(+), 16 deletions(-)

diff --git a/swank/sbcl.lisp b/swank/sbcl.lisp
index 044f41388c..6e20712a22 100644
--- a/swank/sbcl.lisp
+++ b/swank/sbcl.lisp
@@ -1604,26 +1604,33 @@ stack."
                             append (label-value-line i value))))))))
 
 (defmethod emacs-inspect ((o function))
-    (cond ((sb-kernel:simple-fun-p o)
-                   (label-value-line*
-                    (:name (sb-kernel:%simple-fun-name o))
-                    (:arglist (sb-kernel:%simple-fun-arglist o))
-                    (:type (sb-kernel:%simple-fun-type o))
-                    (:code (sb-kernel:fun-code-header o))))
-          ((sb-kernel:closurep o)
-                   (append
-                    (label-value-line :function (sb-kernel:%closure-fun o))
-                    `("Closed over values:" (:newline))
-                    (loop for i below (1- (sb-kernel:get-closure-length o))
-                          append (label-value-line
-                                  i (sb-kernel:%closure-index-ref o i)))))
-          (t (call-next-method o))))
+  (cond ((sb-kernel:simple-fun-p o)
+         (append
+          (label-value-line*
+           ("Name" (sb-kernel:%simple-fun-name o))
+           ("Arglist" (sb-kernel:%simple-fun-arglist o))
+           ("Type" (sb-kernel:%simple-fun-type o))
+           ("Code" (sb-kernel:fun-code-header o)))
+          `("Disassembly:" (:newline)
+             ,(with-output-to-string (s)
+                (sb-disassem:disassemble-fun o :stream s)))))
+        ((sb-kernel:closurep o)
+         (append
+          (label-value-line :function (sb-kernel:%closure-fun o))
+          `("Closed over values:" (:newline))
+          (loop for i below (1- (sb-kernel:get-closure-length o))
+                append (label-value-line
+                        i (sb-kernel:%closure-index-ref o i)))))
+        (t (call-next-method o))))
 
 (defmethod emacs-inspect ((o sb-kernel:code-component))
   (append
    (label-value-line*
-    (:code-size (sb-kernel:%code-code-size o))
-    (:debug-info (sb-kernel:%code-debug-info o)))
+    ("Size" (sb-kernel:%code-code-size o))
+    ("Debug info" (sb-kernel:%code-debug-info o)))
+   `("Entry points: " (:newline))
+   (loop for i from 0 below (sb-vm::code-n-entries o)
+         append (label-value-line i (sb-kernel:%code-entry-point o i)))
    `("Constants:" (:newline))
    (loop for i from sb-vm:code-constants-offset
          below



reply via email to

[Prev in Thread] Current Thread [Next in Thread]