Give G_VOID, G_SCALAR and G_ARRAY the same numeric values as
Nicholas Clark [Mon, 21 Jan 2008 11:50:52 +0000 (11:50 +0000)]
OPf_WANT_VOID, OPf_WANT_SCALAR and OPf_WANT_LIST.

p4raw-id: //depot/perl@33025

cop.h
op.h
perl.c

diff --git a/cop.h b/cop.h
index 641fb66..f41e67a 100644 (file)
--- a/cop.h
+++ b/cop.h
@@ -737,20 +737,20 @@ L<perlcall>.
 =cut
 */
 
-#define G_SCALAR       0
-#define G_ARRAY                1
-#define G_VOID         128     /* skip this bit when adding flags below */
-#define G_WANT         (128|1)
+#define G_SCALAR       2
+#define G_ARRAY                3
+#define G_VOID         1
+#define G_WANT         3
 
 /* extra flags for Perl_call_* routines */
-#define G_DISCARD      2       /* Call FREETMPS.
+#define G_DISCARD      4       /* Call FREETMPS.
                                   Don't change this without consulting the
                                   hash actions codes defined in hv.h */
-#define G_EVAL         4       /* Assume eval {} around subroutine call. */
-#define G_NOARGS       8       /* Don't construct a @_ array. */
-#define G_KEEPERR      16      /* Append errors to $@, don't overwrite it */
-#define G_NODEBUG      32      /* Disable debugging at toplevel.  */
-#define G_METHOD       64       /* Calling method. */
+#define G_EVAL         8       /* Assume eval {} around subroutine call. */
+#define G_NOARGS       16      /* Don't construct a @_ array. */
+#define G_KEEPERR      32      /* Append errors to $@, don't overwrite it */
+#define G_NODEBUG      64      /* Disable debugging at toplevel.  */
+#define G_METHOD      128       /* Calling method. */
 #define G_FAKINGEVAL  256      /* Faking an eval context for call_sv or
                                   fold_constants. */
 
diff --git a/op.h b/op.h
index fa1230d..63390ea 100644 (file)
--- a/op.h
+++ b/op.h
         ((op)->op_flags & OPf_WANT) == OPf_WANT_LIST   ? G_ARRAY   : \
         dfl)
 
-#define OP_GIMME_REVERSE(flags)                        \
-       ((flags & G_VOID) ? OPf_WANT_VOID :     \
-       (flags & G_ARRAY) ? OPf_WANT_LIST :     \
-                           OPf_WANT_SCALAR)
+#define OP_GIMME_REVERSE(flags)        ((flags) & G_WANT)
 
 /*
 =head1 "Gimme" Values
diff --git a/perl.c b/perl.c
index 7dc6d14..907f9cf 100644 (file)
--- a/perl.c
+++ b/perl.c
@@ -2578,6 +2578,11 @@ Perl_call_sv(pTHX_ SV *sv, I32 flags)
        ENTER;
        SAVETMPS;
     }
+    if (!(flags & G_WANT)) {
+       /* Backwards compatibility - as G_SCALAR was 0, it could be omitted.
+        */
+       flags |= G_SCALAR;
+    }
 
     Zero(&myop, 1, LOGOP);
     myop.op_next = NULL;