Mercurial > emacs
changeset 51651:a81c039e79f9
(Advising Primitives): Renamed from Subr Arguments.
Explain that advising primitives doesn't affect calls from C code.
author | Richard M. Stallman <rms@gnu.org> |
---|---|
date | Tue, 24 Jun 2003 18:14:01 +0000 |
parents | d935eabf8d8a |
children | 55fb0658914a |
files | lispref/advice.texi |
diffstat | 1 files changed, 17 insertions(+), 10 deletions(-) [+] |
line wrap: on
line diff
--- a/lispref/advice.texi Tue Jun 24 09:43:04 2003 +0000 +++ b/lispref/advice.texi Tue Jun 24 18:14:01 2003 +0000 @@ -36,7 +36,7 @@ * Preactivation:: Preactivation is a way of speeding up the loading of compiled advice. * Argument Access in Advice:: How advice can access the function's arguments. -* Subr Arguments:: Accessing arguments when advising a primitive. +* Advising Primitives:: Accessing arguments when advising a primitive. * Combined Definition:: How advice is implemented. @end menu @@ -656,16 +656,23 @@ These argument constructs are not really implemented as Lisp macros. Instead they are implemented specially by the advice mechanism. -@node Subr Arguments -@section Definition of Subr Argument Lists +@node Advising Primitives +@section Advising Primitives - When the advice facility constructs the combined definition, it needs -to know the argument list of the original function. This is not always -possible for primitive functions. When advice cannot determine the -argument list, it uses @code{(&rest ad-subr-args)}, which always works -but is inefficient because it constructs a list of the argument values. -You can use @code{ad-define-subr-args} to declare the proper argument -names for a primitive function: + Advising a primitive function (also called a ``subr'') is risky. +Some primitive functions are used by the advice mechanism; advising +them could cause an infinite recursion. Also, many primitive +functions are called directly from C code. Calls to the primitive +from Lisp code will take note of the advice, but calls from C code +will ignore the advice. + +When the advice facility constructs the combined definition, it needs +to know the argument list of the original function. This is not +always possible for primitive functions. When advice cannot determine +the argument list, it uses @code{(&rest ad-subr-args)}, which always +works but is inefficient because it constructs a list of the argument +values. You can use @code{ad-define-subr-args} to declare the proper +argument names for a primitive function: @defun ad-define-subr-args function arglist This function specifies that @var{arglist} should be used as the