*/
/* On OP_PADRANGE, push @_ */
/* On OP_DUMP, has no label */
+ /* On OP_UNSTACK, in a foreach loop */
/* old names; don't use in new code, but don't break them, either */
#define OPf_LIST OPf_WANT_LIST
in dynamic context */
#define OPpENTERSUB_LVAL_MASK (OPpLVAL_INTRO|OPpENTERSUB_INARGS)
-/* VMS-specific hints in COPs */
-#define OPpHINT_M_VMSISH_MASK (OPpHINT_M_VMSISH_STATUS|OPpHINT_M_VMSISH_TIME)
-
struct op {
OP* op_first; /* optree for method name */
SV* op_meth_sv; /* static method name */
} op_u;
+#ifdef USE_ITHREADS
+ PADOFFSET op_class_targ; /* pad index for class name if threaded */
+#else
+ SV* op_class_sv; /* static class name */
+#endif
};
struct pmop {
? cSVOPx(v)->op_sv : PAD_SVl((v)->op_targ))
# define cSVOPx_svp(v) (cSVOPx(v)->op_sv \
? &cSVOPx(v)->op_sv : &PAD_SVl((v)->op_targ))
+# define cMETHOPx_class(v) (cMETHOPx(v)->op_class_targ ? \
+ PAD_SVl(cMETHOPx(v)->op_class_targ) : NULL)
#else
# define cGVOPx_gv(o) ((GV*)cSVOPx(o)->op_sv)
# ifndef PERL_CORE
# endif
# define cSVOPx_sv(v) (cSVOPx(v)->op_sv)
# define cSVOPx_svp(v) (&cSVOPx(v)->op_sv)
+# define cMETHOPx_class(v) (cMETHOPx(v)->op_class_sv)
#endif
# define cMETHOPx_meth(v) cSVOPx_sv(v)