This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
better document OA_ flags
authorDavid Mitchell <davem@iabyn.com>
Thu, 21 Aug 2014 19:16:48 +0000 (20:16 +0100)
committerDavid Mitchell <davem@iabyn.com>
Wed, 10 Sep 2014 13:25:05 +0000 (14:25 +0100)
Its a bit confusing which bits in PL_opargs are used for what,
and which flags in regen/opcodes map to which OA_* value

op.h
regen/opcodes

diff --git a/op.h b/op.h
index 1b247ce..0486548 100644 (file)
--- a/op.h
+++ b/op.h
@@ -617,7 +617,7 @@ struct loop {
 #define OA_DANGEROUS 64
 #define OA_DEFGV 128
 
-/* The next 4 bits encode op class information */
+/* The next 4 bits (8..11) encode op class information */
 #define OCSHIFT 8
 
 #define OA_CLASS_MASK (15 << OCSHIFT)
@@ -637,9 +637,10 @@ struct loop {
 #define OA_FILESTATOP (12 << OCSHIFT)
 #define OA_LOOPEXOP (13 << OCSHIFT)
 
+/* Each remaining nybble of PL_opargs (i.e. bits 12..15, 16..19 etc)
+ * encode the type for each arg */
 #define OASHIFT 12
 
-/* Remaining nybbles of PL_opargs */
 #define OA_SCALAR 1
 #define OA_LIST 2
 #define OA_AVREF 3
index 988b841..82e0e0f 100644 (file)
 # pvop/svop   - "            cop      - ;
 
 # Other options are:
-#   needs stack mark                    - m
-#   needs constant folding              - f
-#   produces a scalar                   - s
-#   produces an integer                 - i
-#   needs a target                      - t
-#   target can be in a pad              - T
-#   has a corresponding integer version - I
-#   has side effects                    - d
-#   uses $_ if no argument given        - u
+#   needs stack mark                    - m  (OA_MARK)
+#   needs constant folding              - f  (OA_FOLDCONST)
+#   produces a scalar                   - s  (OA_RETSCALAR)
+#   produces an integer                 - i  (unused)
+#   needs a target                      - t  (OA_TARGET)
+#   target can be in a pad              - T  (OA_TARGET|OA_TARGLEX)
+#   has a corresponding integer version - I  (OA_OTHERINT)
+#   has side effects                    - d  (OA_DANGEROUS)
+#   uses $_ if no argument given        - u  (OA_DEFGV)
 
 # Values for the operands are:
 # scalar      - S            list     - L            array     - A