/* op.h
*
* Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
- * 2000, 2001, 2002, 2003, 2004, 2005, 2006 by Larry Wall and others
+ * 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, by Larry Wall and others
*
* You may distribute under the terms of either the GNU General Public
* License or the Artistic License, as specified in the README file.
* op_type The type of the operation.
* op_opt Whether or not the op has been optimised by the
* peephole optimiser.
- * op_static Whether or not the op is statically defined.
- * This flag is used by the B::C compiler backend
- * and indicates that the op should not be freed.
*
* See the comments in S_clear_yystack() for more
* details on the following three flags:
-
+ *
* op_latefree tell op_free() to clear this op (and free any kids)
* but not yet deallocate the struct. This means that
* the op may be safely op_free()d multiple times
* op_latefreed an op_latefree op has been op_free()d
* op_attached this op (sub)tree has been attached to a CV
*
- * op_spare two spare bits!
+ * op_spare three spare bits!
* op_flags Flags common to all operations. See OPf_* below.
* op_private Flags peculiar to a particular operation (BUT,
* by default, set to the number of children until
* which may or may not check number of children).
*/
-#ifdef DEBUGGING_OPS
-#define OPCODE opcode
-#else
#define OPCODE U16
-#endif
#ifdef PERL_MAD
# define MADPROP_IN_BASEOP MADPROP* op_madprop;
PADOFFSET op_targ; \
unsigned op_type:9; \
unsigned op_opt:1; \
- unsigned op_static:1; \
unsigned op_latefree:1; \
unsigned op_latefreed:1; \
unsigned op_attached:1; \
- unsigned op_spare:2; \
+ unsigned op_spare:3; \
U8 op_flags; \
U8 op_private;
#endif
/* On OP_EXISTS, treat av as av, not avhv. */
/* On OP_(ENTER|LEAVE)EVAL, don't clear $@ */
/* On OP_ENTERITER, loop var is per-thread */
- /* On pushre, re is /\s+/ imp. by split " " */
+ /* On pushre, rx is used as part of split, e.g. split " " */
/* On regcomp, "use re 'eval'" was in scope */
/* On OP_READLINE, was <$filehandle> */
/* On RV2[ACGHS]V, don't create GV--in
#else
REGEXP * op_pmregexp; /* compiled expression */
#endif
- U32 op_pmflags;
+ U32 op_pmflags;
union {
OP * op_pmreplroot; /* For OP_SUBST */
#ifdef USE_ITHREADS
#define cSVOPo_sv cSVOPx_sv(o)
#define kSVOP_sv cSVOPx_sv(kid)
-#define Nullop Null(OP*)
+#define Nullop ((OP*)NULL)
/* Lowest byte-and-a-bit of PL_opargs */
#define OA_MARK 1
struct madprop {
MADPROP* mad_next;
- void *mad_val;
+ const void *mad_val;
U32 mad_vlen;
/* short mad_count; */
char mad_key;
#endif
/*
- * Values that can be hold by mad_key :
+ * Values that can be held by mad_key :
* ^ unfilled head spot
* , literal ,
* ; literal ; (blank if implicit ; at end of block)