Re: op_seq (was: Freeing code)
[p5sagit/p5-mst-13.2.git] / op.h
diff --git a/op.h b/op.h
index aeaae1c..c9f1139 100644 (file)
--- a/op.h
+++ b/op.h
  *                     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
@@ -194,6 +202,7 @@ Deprecated.  Use C<GIMME_V> instead.
 #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 */
 
@@ -209,6 +218,7 @@ Deprecated.  Use C<GIMME_V> instead.
 
 /* Private of OP_FTXXX */
 #define OPpFT_ACCESS           2       /* use filetest 'access' */
+#define OPpFT_STACKED          4       /* stacked filetest, as in "-f -x $f" */
 #define OP_IS_FILETEST_ACCESS(op)              \
        (((op)->op_type) == OP_FTRREAD  ||      \
         ((op)->op_type) == OP_FTRWRITE ||      \