From: Gerd Moellmann Date: Thu, 17 May 2001 13:58:14 +0000 (+0000) Subject: (elp-instrument-function): Handle advised X-Git-Tag: emacs-pretest-21.0.104~461 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=cebf1b97f3619eceb9d5ef0919fcf88315c3eab3;p=emacs.git (elp-instrument-function): Handle advised functions. --- diff --git a/lisp/ChangeLog b/lisp/ChangeLog index b28f19da1c5..1fed7553fa9 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,8 @@ +2001-05-17 Gerd Moellmann + + * emacs-lisp/elp.el (elp-instrument-function): Handle advised + functions. + 2001-05-17 Stefan Monnier * jit-lock.el (jit-lock-after-change): Check the font-lock-multiline diff --git a/lisp/emacs-lisp/elp.el b/lisp/emacs-lisp/elp.el index af189126a09..6ecb05b231f 100644 --- a/lisp/emacs-lisp/elp.el +++ b/lisp/emacs-lisp/elp.el @@ -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 @@ FUNSYM must be a symbol of a defined function." ;; 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.