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。