Можно ли узнать, что `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
?