Можно ли узнать, что `XSUB` был вызван с помощью`&sub`

Когда PP суб называется CX для этого саб создан.
Получая доступ к этому контексту CxHASARGS(CX_CUR()) мы можем проверить этот саб hasargs или нет.

Но для XSUB контекст не создан, поэтому мы не можем использовать этот трюк.

Можно узнать XSUB был вызван с помощью &sub или нет?

UPD
Глядя на источники в pp_entersub когда cv является XSUB, Мы можем видеть, как обрабатывать код hasargs, Это доступ PL_op->op_flags & OPf_STACKED потом чуть позже назовите цель XSUB:

if( PL_op->op_flags & OPf_STACKED ...
...
CvXSUB(cv)(aTHX_ cv);

Будет ли это хорошо, если я в моем XSUB Я делаю такую ​​же проверку PL_op->op_flags & OPf_STACKED ?

0 ответов

Другие вопросы по тегам