summaryrefslogtreecommitdiff
path: root/lisp/emacs-lisp
diff options
context:
space:
mode:
authorRichard M. Stallman <rms@gnu.org>1994-07-20 05:33:14 +0000
committerRichard M. Stallman <rms@gnu.org>1994-07-20 05:33:14 +0000
commit3c7e6b9d2a427acdcb03d63b3c19939180687b9e (patch)
treefc353c1f4d410147732a9f8a0d3dcf32d503aced /lisp/emacs-lisp
parent41cf13b9dd25926bbe71c53da80bf713ac4b4837 (diff)
downloademacs-3c7e6b9d2a427acdcb03d63b3c19939180687b9e.tar.gz
emacs-3c7e6b9d2a427acdcb03d63b3c19939180687b9e.tar.bz2
emacs-3c7e6b9d2a427acdcb03d63b3c19939180687b9e.zip
(disassemble-1): Display the pc values.
(disassemble-column-1-indent): Increase to 8.
Diffstat (limited to 'lisp/emacs-lisp')
-rw-r--r--lisp/emacs-lisp/disass.el25
1 files changed, 19 insertions, 6 deletions
diff --git a/lisp/emacs-lisp/disass.el b/lisp/emacs-lisp/disass.el
index abf1eb9c129..8a980db06ac 100644
--- a/lisp/emacs-lisp/disass.el
+++ b/lisp/emacs-lisp/disass.el
@@ -41,7 +41,7 @@
;;; Since we don't use byte-decompile-lapcode, let's try not loading byte-opt.
(require 'byte-compile "bytecomp")
-(defvar disassemble-column-1-indent 5 "*")
+(defvar disassemble-column-1-indent 8 "*")
(defvar disassemble-column-2-indent 10 "*")
(defvar disassemble-recursive-indent 3 "*")
@@ -169,7 +169,7 @@ OBJ should be a call to BYTE-CODE generated by the byte compiler."
(setq bytes (aref obj 1)
constvec (aref obj 2)))
(let ((lap (byte-decompile-bytecode bytes constvec))
- op arg opname)
+ op arg opname pc-value)
(let ((tagno 0)
tmp
(lap lap))
@@ -177,12 +177,26 @@ OBJ should be a call to BYTE-CODE generated by the byte compiler."
(setcar (cdr tmp) (setq tagno (1+ tagno)))
(setq lap (cdr (memq tmp lap)))))
(while lap
+ ;; Take off the pc value of the next thing
+ ;; and put it in pc-value.
+ (setq pc-value nil)
+ (if (numberp (car lap))
+ (setq pc-value (car lap)
+ lap (cdr lap)))
+ ;; Fetch the next op and its arg.
(setq op (car (car lap))
arg (cdr (car lap)))
+ (setq lap (cdr lap))
(indent-to indent)
(if (eq 'TAG op)
- (insert (int-to-string (car arg)) ":")
-
+ (progn
+ ;; We have a label. Display it, but first its pc value.
+ (if pc-value
+ (insert (format "%d:" pc-value)))
+ (insert (int-to-string (car arg))))
+ ;; We have an instruction. Display its pc value first.
+ (if pc-value
+ (insert (format "%d" pc-value)))
(indent-to (+ indent disassemble-column-1-indent))
(if (and op
(string-match "^byte-" (setq opname (symbol-name op))))
@@ -241,8 +255,7 @@ OBJ should be a call to BYTE-CODE generated by the byte compiler."
(let ((print-escape-newlines t))
(prin1 arg (current-buffer))))))
)
- (insert "\n"))
- (setq lap (cdr lap)))))
+ (insert "\n")))))
nil)
;;; disass.el ends here