changeset 14791:7d2e0f0d9bf7

(profile-convert-byte-code): New function. (profile-a-function): Use profile-convert-byte-code.
author Richard M. Stallman <rms@gnu.org>
date Fri, 08 Mar 1996 17:44:00 +0000
parents 70553c545976
children 66a9ba81f2c4
files lisp/emacs-lisp/profile.el
diffstat 1 files changed, 18 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/emacs-lisp/profile.el	Fri Mar 08 17:43:20 1996 +0000
+++ b/lisp/emacs-lisp/profile.el	Fri Mar 08 17:44:00 1996 +0000
@@ -218,9 +218,27 @@
 	(setcdr accum (- (cdr accum) profile-million)))
       )))
 
+(defun profile-convert-byte-code (function)
+  (let ((defn (symbol-function function)))
+    (if (byte-code-function-p defn)
+	;; It is a compiled code object.
+	(let* ((contents (append defn nil))
+	       (body
+		(list (list 'byte-code (nth 1 contents)
+			    (nth 2 contents) (nth 3 contents)))))
+	  (if (nthcdr 5 contents)
+	      (setq body (cons (list 'interactive (nth 5 contents)) body)))
+	  (if (nth 4 contents)
+	      ;; Use `documentation' here, to get the actual string,
+	      ;; in case the compiled function has a reference
+	      ;; to the .elc file.
+	      (setq body (cons (documentation function) body)))
+	  (fset function (cons 'lambda (cons (car contents) body)))))))
+
 (defun profile-a-function (fun)
   "Profile the function FUN."
   (interactive "aFunction to profile: ")
+  (profile-convert-byte-code fun)
   (let ((def (symbol-function fun)) (funlen (length (symbol-name fun))))
     (if (eq (car def) 'lambda) nil
       (error "To profile: %s must be a user-defined function" fun))