* parent takes over role of remembering starting op.)
* op_ppaddr Pointer to current ppcode's function.
* 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.
+ * op_spare Five 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
OP* op_sibling; \
OP* (CPERLscope(*op_ppaddr))(pTHX); \
PADOFFSET op_targ; \
- OPCODE op_type; \
- U16 op_seq; \
+ unsigned op_type:9; \
+ unsigned op_opt:1; \
+ unsigned op_static:1; \
+ unsigned op_spare:5; \
U8 op_flags; \
U8 op_private;
#endif
/* On RV2[SG]V, don't create GV--in defined()*/
/* On OP_DBSTATE, indicates breakpoint
* (runtime property) */
+ /* On OP_AELEMFAST, indiciates pad var */
/* old names; don't use in new code, but don't break them, either */
#define OPf_LIST OPf_WANT_LIST
#define OPpTARGET_MY 16 /* Target is PADMY. */
/* Private for OP_CONST */
+#define OPpCONST_SHORTCIRCUIT 4 /* eg the constant 5 in (5 || foo) */
#define OPpCONST_STRICT 8 /* bearword subject to strict 'subs' */
#define OPpCONST_ENTERED 16 /* Has been entered as symbol. */
#define OPpCONST_ARYBASE 32 /* Was a $[ translated to constant. */
#define OPpSORT_NUMERIC 1 /* Optimized away { $a <=> $b } */
#define OPpSORT_INTEGER 2 /* Ditto while under "use integer" */
#define OPpSORT_REVERSE 4 /* Descending sort */
+#define OPpSORT_INPLACE 8 /* sort in-place; eg @a = sort @a */
/* Private for OP_THREADSV */
#define OPpDONE_SVREF 64 /* Been through newSVREF once */