Spec-Zone.ru › Elisp

Advice и байт-код

Не для всех функций можно надежно установить advice. Байт-компилятор может заменить вызов функции последовательностью инструкций, которая не вызывает функцию, которую вы хотели изменить.

Обычно это происходит из-за одного из следующих трех механизмов:

byte-compile свойства

Если у символа функции есть свойство byte-compile, вместо определения функции символа будет использоваться это свойство. См. Функции байтовой компиляции.

byte-optimize свойства

Если у символа функции есть свойство byte-optimize, байт-компилятор может изменить аргументы функции или решить использовать совсем другую функцию.

compiler-macro формы declare

В определении функции может присутствовать специальная форма compiler-macro declare (см. Форма declare), которая определяет расширитель, вызываемый при компиляции функции. Затем расширитель может привести к тому, что сгенерированный байт-код не будет вызывать исходную функцию.

Copyright © 1990-1996, 1998-2026 Free Software Foundation, Inc.
Licensed under the GNU GPL license.
https://www.gnu.org/software/emacs/manual/html_node/elisp/Advice-and-Byte-Code.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API