Function: elp-instrument-function
elp-instrument-function is an autoloaded, interactive and
byte-compiled function defined in elp.el.gz.
Signature
(elp-instrument-function FUNSYM)
Documentation
Instrument FUNSYM for profiling.
FUNSYM must be a symbol of a defined function.
Key Bindings
Source Code
;; Defined in /usr/src/emacs/lisp/emacs-lisp/elp.el.gz
;;;###autoload
(defun elp-instrument-function (funsym)
"Instrument FUNSYM for profiling.
FUNSYM must be a symbol of a defined function."
(interactive "aFunction to instrument: ")
(let* ((infovec (vector 0 0)))
;; We cannot profile functions used internally during profiling.
(unless (elp-profilable-p funsym)
(error "ELP cannot profile the function: %s" funsym))
;; The info vector data structure is a 2 element vector. The 0th
;; element is the call-count, i.e. the total number of times this
;; function has been entered. This value is bumped up on entry to
;; the function so that non-local exits are still recorded. TBD:
;; I haven't tested non-local exits at all, so no guarantees.
;;
;; The 1st element is the total amount of time in seconds that has
;; been spent inside this function. This number is added to on
;; function exit.
;; 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.
(advice-add funsym :around (elp--make-wrapper funsym)
`((name . ,elp--advice-name) (depth . -99)))))