Где я могу найти типы операций, которые фильтруются PL_check?
PL_check
переменная, предоставляемая общедоступным API Perl:
Массив, проиндексированный с помощью кода операции, функций, которые будут вызываться для фазы проверки проверки построения дерева при компиляции кода Perl. Для большинства (но не для всех) типов операций после того, как операция была изначально построена и заполнена дочерними операциями, она будет отфильтрована через функцию проверки, на которую ссылается соответствующий элемент этого массива.
Где в исходном коде я могу увидеть, какие типы кода операции будут отфильтрованы?
1 ответ
Вы можете проверить все типы оп. Как сказано выше, это массив, индексированный по коду операции.
Если вы хотите узнать, какие операции имеют средство проверки, это может варьироваться в зависимости от того, какие модули вы загрузили. Например, автовивификация добавляет шашки для OP_PADANY
, OP_PADSV
, OP_AELEM
, OP_HELEM
, OP_RV2SV
, OP_RV2AV
, OP_RV2HV
, OP_ASLICE
, OP_HSLICE
, OP_EXISTS
, OP_DELETE
, OP_KEYS
а также OP_VALUES
, (Некоторые из них могут уже иметь контролеры, и в этом случае новый контролер autovivifaction вызовет старый контролер.)
Вы можете узнать, какие операции имеют встроенную проверку, посмотрев на определение PL_check
в opcode.h
(который генерируется opcode.pl
).