1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2025-12-15 10:30:25 -08:00

* lisp/emacs-lisp/disass.el: Display jump tables for switch.

This commit is contained in:
Vibhav Pant 2017-01-26 01:02:16 +05:30
parent 19cb3985a3
commit 4e6140b283

View file

@ -221,9 +221,17 @@ OBJ should be a call to BYTE-CODE generated by the byte compiler."
((memq op '(byte-constant byte-constant2))
;; it's a constant
(setq arg (car arg))
;; but if the value of the constant is compiled code, then
;; recursively disassemble it.
(cond ((or (byte-code-function-p arg)
;; if the succeeding op is byte-switch, display the jump table
;; used
(cond ((eq (car-safe (car-safe (cdr lap))) 'byte-switch)
(insert (format "<jump-table-%s ( " (hash-table-test arg)))
(maphash #'(lambda (value tag)
(insert (format "%s %s " value (cadr tag))))
arg)
(insert ")>"))
;; if the value of the constant is compiled code, then
;; recursively disassemble it.
((or (byte-code-function-p arg)
(and (consp arg) (functionp arg)
(assq 'byte-code arg))
(and (eq (car-safe arg) 'macro)