13.12.5 Советы и байт-код

Не все функции могут быть надежно настроены (advised). Компилятор байт-кода может решить заменить вызов функции последовательностью инструкций, которая не вызывает функцию, которую вы хотели изменить.

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

byte-compile свойства

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

byte-optimize свойства

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

compiler-macro формы объявления

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