PL_check
是 Perl 公共 API 公开的变量:
数组,由操作码索引,在 Perl 代码编译期间将在 optree 构建的“检查”阶段调用的函数。对于大多数(但不是全部)类型的操作,一旦最初构建操作并使用子操作填充操作,它将通过该数组的适当元素引用的检查函数进行过滤。
在源代码的哪里可以看到哪些类型的操作码将被过滤?
您可以检查所有类型的操作。就像上面所说的,它是一个由操作码索引的数组。
如果您想知道哪些操作具有检查器,这可能会根据您加载的模块而有所不同。例如,自动生存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
通过查看in的定义opcode.h
(由 生成) ,您可以找到哪些操作具有内置检查器opcode.pl
。