* which may or may not check number of children).
*/
-typedef U16 PADOFFSET;
+typedef U32 PADOFFSET;
-#ifdef DEBUGGING
+#ifdef DEBUGGING_OPS
#define OPCODE opcode
#else
#define OPCODE U16
U8 op_flags; \
U8 op_private;
-#define GIMME (op->op_flags & OPf_KNOW ? op->op_flags & OPf_LIST : cxstack[cxstack_ix].blk_gimme & G_ARRAY)
+#define GIMME (op->op_flags & OPf_KNOW ? op->op_flags & OPf_LIST : dowantarray())
/* Public flags */
#define OPf_LIST 1 /* Do operator in list context. */
/* On flipflop, we saw ... instead of .. */
/* On UNOPs, saw bare parens, e.g. eof(). */
/* On OP_ENTERSUB || OP_NULL, saw a "do". */
+ /* On OP_(ENTER|LEAVE)EVAL, don't clear $@ */
/* Private for lvalues */
#define OPpLVAL_INTRO 128 /* Lvalue must be localized */
/* Private for OP_ENTERSUB, OP_RV2?V, OP_?ELEM */
/* (lower bits carry hints) */
-#define OPpDEREF_DB 16 /* Debug subroutine. */
+#define OPpENTERSUB_AMPER 8 /* Used & form to call. */
+#define OPpENTERSUB_DB 16 /* Debug subroutine. */
#define OPpDEREF_AV 32 /* Want ref to AV. */
#define OPpDEREF_HV 64 /* Want ref to HV. */
/* Private for OP_CONST */
+#define OPpCONST_ENTERED 16 /* Has been entered as symbol. */
+#define OPpCONST_ARYBASE 32 /* Was a $[ translated to constant. */
#define OPpCONST_BARE 64 /* Was a bare word (filehandle?). */
/* Private for OP_FLIP/FLOP */
REGEXP * op_pmregexp; /* compiled expression */
SV * op_pmshort; /* for a fast bypass of execute() */
U16 op_pmflags;
+ U16 op_pmpermflags;
char op_pmslen;
};
char * op_pv;
};
-struct cvop {
- BASEOP
- CV * op_cv;
- OP * op_cont;
-};
-
struct loop {
BASEOP
OP * op_first;
#define cSVOP ((SVOP*)op)
#define cGVOP ((GVOP*)op)
#define cPVOP ((PVOP*)op)
-#define cCVOP ((CVOP*)op)
#define cCOP ((COP*)op)
#define cLOOP ((LOOP*)op)
#define kSVOP ((SVOP*)kid)
#define kGVOP ((GVOP*)kid)
#define kPVOP ((PVOP*)kid)
-#define kCVOP ((CVOP*)kid)
#define kCOP ((COP*)kid)
#define kLOOP ((LOOP*)kid)