summaryrefslogtreecommitdiff
path: root/lisp/emacs-lisp/disass.el
diff options
context:
space:
mode:
Diffstat (limited to 'lisp/emacs-lisp/disass.el')
-rw-r--r--lisp/emacs-lisp/disass.el14
1 files changed, 6 insertions, 8 deletions
diff --git a/lisp/emacs-lisp/disass.el b/lisp/emacs-lisp/disass.el
index 2a41e611dc0..206166bc77a 100644
--- a/lisp/emacs-lisp/disass.el
+++ b/lisp/emacs-lisp/disass.el
@@ -1,6 +1,6 @@
;;; disass.el --- disassembler for compiled Emacs Lisp code
-;; Copyright (C) 1986, 1991, 2002-2011 Free Software Foundation, Inc.
+;; Copyright (C) 1986, 1991, 2002-2012 Free Software Foundation, Inc.
;; Author: Doug Cutting <doug@csli.stanford.edu>
;; Jamie Zawinski <jwz@lucid.com>
@@ -35,6 +35,8 @@
;;; Code:
+(require 'macroexp)
+
;;; The variable byte-code-vector is defined by the new bytecomp.el.
;;; The function byte-decompile-lapcode is defined in byte-opt.el.
;;; Since we don't use byte-decompile-lapcode, let's try not loading byte-opt.
@@ -78,14 +80,10 @@ redefine OBJECT if it is a symbol."
obj (symbol-function obj)))
(if (subrp obj)
(error "Can't disassemble #<subr %s>" name))
- (when (and (listp obj) (eq (car obj) 'autoload))
- (load (nth 1 obj))
- (setq obj (symbol-function name)))
- (if (eq (car-safe obj) 'macro) ;handle macros
+ (setq obj (autoload-do-load obj name))
+ (if (eq (car-safe obj) 'macro) ;Handle macros.
(setq macro t
obj (cdr obj)))
- (when (and (listp obj) (eq (car obj) 'closure))
- (error "Don't know how to compile an interpreted closure"))
(if (and (listp obj) (eq (car obj) 'byte-code))
(setq obj (list 'lambda nil obj)))
(if (and (listp obj) (not (eq (car obj) 'lambda)))
@@ -155,7 +153,7 @@ redefine OBJECT if it is a symbol."
(t
(insert "Uncompiled body: ")
(let ((print-escape-newlines t))
- (prin1 (if (cdr obj) (cons 'progn obj) (car obj))
+ (prin1 (macroexp-progn obj)
(current-buffer))))))
(if interactive-p
(message "")))