[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Problem advising nreverse.
From: |
Sergei Organov |
Subject: |
Re: Problem advising nreverse. |
Date: |
Mon, 14 Dec 2009 14:07:56 +0300 |
User-agent: |
Gnus/5.11 (Gnus v5.11) Emacs/22.2 (gnu/linux) |
pjb@informatimago.com (Pascal J. Bourguignon) writes:
> Sergei Organov <osv@javad.com> writes:
>
>> Hello,
>>
>> It seems that an advice set for `nreverse' function fails to be called
>> when `nreverse' is called from a byte compiled function:
[...]
>> Is it bug or feature? What's going on here?
>
> Indeed, it is a feature.
>
> Advices are not available from several call points:
>
> 1- when the advised function is called from C code.
>
> 2- when the advised function is a an opcode of the virtual machine.
> You can observe the difference between the two primitives nreverse
> and buffer-name for example, with:
>
> (disassemble (byte-compile (lambda (x) (nreverse x))))
> vs.:
> (disassemble (byte-compile (lambda (x) (buffer-name x))))
>
> In the former case, nreverse is a byte code, and therefore no
> advice applies. In the later case, buffer-name is called with the
> call byte code, which will go thru the advice.
>
> Notice that if you really want to advice such a low level primitive
> function as nreverse, you can replace it with a lisp function (and
> recompile all the code that uses it).
Thanks a lot for the explanations and suggestion.
Unfortunately this is not an option as intention was to advise
`nreverse' during calls to a possibly buggy `ewoc-collect' function that
for a long time errorneously called `nreverse' at the end (fixed since
2008).
-- Sergei.
- Problem advising nreverse., Sergei Organov, 2009/12/11
- Re: Problem advising nreverse., Pascal J. Bourguignon, 2009/12/12
- Re: Problem advising nreverse.,
Sergei Organov <=
- Message not available
- Message not available
- Re: Problem advising nreverse., Pascal J. Bourguignon, 2009/12/14
- Re: Problem advising nreverse., Sergei Organov, 2009/12/14
- Message not available
- Re: Problem advising nreverse., Pascal J. Bourguignon, 2009/12/14
- Re: Problem advising nreverse., Sergei Organov, 2009/12/14
- Message not available
- Re: Problem advising nreverse., Pascal J. Bourguignon, 2009/12/14
- Re: Problem advising nreverse., Sergei Organov, 2009/12/15