#define OPpASSIGN_BACKWARDS 64 /* Left & right switched. */
#define OPpASSIGN_CV_TO_GV 128 /* Possible optimisation for constants. */
-/* Private for OP_[AS]ASSIGN */
-#define OPpASSIGN_STATE 32 /* Assign to a "state" variable */
-
/* Private for OP_MATCH and OP_SUBST{,CONST} */
#define OPpRUNTIME 64 /* Pattern coming in on the stack */
#else
REGEXP * op_pmregexp; /* compiled expression */
#endif
- U32 op_pmflags;
+ U32 op_pmflags;
union {
OP * op_pmreplroot; /* For OP_SUBST */
#ifdef USE_ITHREADS
# define PmopSTASHPV(o) (PmopSTASH(o) ? HvNAME_get(PmopSTASH(o)) : NULL)
/* op_pmstashstartu.op_pmstash is not refcounted */
# define PmopSTASHPV_set(o,pv) PmopSTASH_set((o), gv_stashpv(pv,GV_ADD))
+/* Note that if this becomes non-empty, then S_forget_pmop in op.c will need
+ changing */
# define PmopSTASH_free(o)
#endif
#endif
#define OpREFCNT_set(o,n) ((o)->op_targ = (n))
-#define OpREFCNT_inc(o) ((o) ? (++(o)->op_targ, (o)) : NULL)
-#define OpREFCNT_dec(o) (--(o)->op_targ)
+#ifdef PERL_DEBUG_READONLY_OPS
+# define OpREFCNT_inc(o) Perl_op_refcnt_inc(aTHX_ o)
+# define OpREFCNT_dec(o) Perl_op_refcnt_dec(aTHX_ o)
+#else
+# define OpREFCNT_inc(o) ((o) ? (++(o)->op_targ, (o)) : NULL)
+# define OpREFCNT_dec(o) (--(o)->op_targ)
+#endif
/* flags used by Perl_load_module() */
#define PERL_LOADMOD_DENY 0x1
* E tr/E/R/, /E/
* f folded constant op
* F peg op for format
+ * g op was forced to be a word
* i if/unless modifier
* I if/elsif/unless statement
+ * k local declarator
* K retired kid op
* l last index of array ($#foo)
* L label
* m modifier on regex
- * M my assignment slurped into some other operator's target
* n sub or format name
* o current operator/declarator name
* o else/continue
* Q optimized qw//
* r expression producing R
* R tr/E/R/ s/E/R/
- * R assign slurped by split
* s sub signature
* S use import stub (no import)
* S retired sort block