Mercurial > emacs
changeset 8294:cd3d2474ea10
(byte-decompile-bytecode-1): Don't add pc values
if make-spliceable is non-nil. (Arg renamed from make-splicable.)
author | Richard M. Stallman <rms@gnu.org> |
---|---|
date | Wed, 20 Jul 1994 06:04:46 +0000 |
parents | 74218ea236fe |
children | 51cebd28b474 |
files | lisp/emacs-lisp/byte-opt.el |
diffstat | 1 files changed, 9 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- a/lisp/emacs-lisp/byte-opt.el Wed Jul 20 05:33:14 1994 +0000 +++ b/lisp/emacs-lisp/byte-opt.el Wed Jul 20 06:04:46 1994 +0000 @@ -1094,16 +1094,21 @@ ;; As byte-decompile-bytecode, but updates ;; byte-compile-{constants, variables, tag-number}. -;; If the optional 3rd arg is true, then `return' opcodes are replaced +;; If MAKE-SPLICEABLE is true, then `return' opcodes are replaced ;; with `goto's destined for the end of the code. -(defun byte-decompile-bytecode-1 (bytes constvec &optional make-splicable) +;; That is for use by the compiler. +;; If MAKE-SPLICEABLE is nil, we are being called for the disassembler. +;; In that case, we put a pc value into the list +;; before each insn (or its label). +(defun byte-decompile-bytecode-1 (bytes constvec &optional make-spliceable) (let ((length (length bytes)) (ptr 0) optr tag tags op offset lap tmp endtag (retcount 0)) (while (not (= ptr length)) - (setq lap (cons ptr lap)) + (or make-spliceable + (setq lap (cons ptr lap))) (setq op (aref bytes ptr) optr ptr offset (disassemble-offset)) ; this does dynamic-scope magic @@ -1125,7 +1130,7 @@ (car (setq byte-compile-variables (cons (list tmp) byte-compile-variables))))))) - ((and make-splicable + ((and make-spliceable (eq op 'byte-return)) (if (= ptr (1- length)) (setq op nil)