Mercurial > emacs
changeset 37785:908fb90452ba
(elp-instrument-function): Handle advised
functions.
author | Gerd Moellmann <gerd@gnu.org> |
---|---|
date | Thu, 17 May 2001 13:55:33 +0000 |
parents | b2509ef38ea1 |
children | b93b6e5c76bf |
files | lisp/emacs-lisp/elp.el |
diffstat | 1 files changed, 13 insertions(+), 6 deletions(-) [+] |
line wrap: on
line diff
--- a/lisp/emacs-lisp/elp.el Thu May 17 13:44:50 2001 +0000 +++ b/lisp/emacs-lisp/elp.el Thu May 17 13:55:33 2001 +0000 @@ -1,6 +1,6 @@ ;;; elp.el --- Emacs Lisp Profiler -;; Copyright (C) 1994,1995,1997,1998 Free Software Foundation, Inc. +;; Copyright (C) 1994,1995,1997,1998, 2001 Free Software Foundation, Inc. ;; Author: 1994-1998 Barry A. Warsaw ;; Maintainer: FSF @@ -266,15 +266,22 @@ ;; put the info vector on the property list (put funsym elp-timer-info-property infovec) - ;; set the symbol's new profiling function definition to run - ;; elp-wrapper - (fset funsym newguts) + ;; Set the symbol's new profiling function definition to run + ;; elp-wrapper. + (let ((advice-info (get funsym 'ad-advice-info))) + (if advice-info + (progn + ;; If function is advised, don't let Advice change + ;; its definition from under us during the `fset'. + (put funsym 'ad-advice-info nil) + (fset funsym newguts) + (put funsym 'ad-advice-info advice-info)) + (fset funsym newguts))) ;; add this function to the instrumentation list (or (memq funsym elp-all-instrumented-list) (setq elp-all-instrumented-list - (cons funsym elp-all-instrumented-list))) - )) + (cons funsym elp-all-instrumented-list))))) (defun elp-restore-function (funsym) "Restore an instrumented function to its original definition.