This is a live mirror of the Perl 5 development currently hosted at
Convert the flags argument for Perl_sv_{eq,cmp,cmp_locale}_flags() to U32.
authorNicholas Clark <>
Thu, 11 Nov 2010 10:25:02 +0000 (10:25 +0000)
committerNicholas Clark <>
Thu, 11 Nov 2010 10:25:02 +0000 (10:25 +0000)
These functions have not yet been in a stable release.
Going forwards, I think that we should consider converting all bitmap flags
arguments to *un*signed types. Most uses of I32 in the core are inappropriate.


index 030287c..9957c86 100644 (file)
--- a/embed.fnc
+++ b/embed.fnc
@@ -1163,9 +1163,11 @@ pd       |I32    |sv_clean_all
 pd     |void   |sv_clean_objs
 Apd    |void   |sv_clear       |NN SV *const orig_sv
 Apd    |I32    |sv_cmp         |NULLOK SV *const sv1|NULLOK SV *const sv2
-Apd    |I32    |sv_cmp_flags   |NULLOK SV *const sv1|NULLOK SV *const sv2|const I32 flags
+Apd    |I32    |sv_cmp_flags   |NULLOK SV *const sv1|NULLOK SV *const sv2 \
+                               |const U32 flags
 Apd    |I32    |sv_cmp_locale  |NULLOK SV *const sv1|NULLOK SV *const sv2
-Apd    |I32    |sv_cmp_locale_flags    |NULLOK SV *const sv1|NULLOK SV *const sv2|const I32 flags
+Apd    |I32    |sv_cmp_locale_flags    |NULLOK SV *const sv1 \
+                               |NULLOK SV *const sv2|const U32 flags
 #if defined(USE_LOCALE_COLLATE)
 Amd    |char*  |sv_collxfrm    |NN SV *const sv|NN STRLEN *const nxp
 Apd    |char*  |sv_collxfrm_flags      |NN SV *const sv|NN STRLEN *const nxp|I32 const flags
@@ -1179,7 +1181,7 @@ Ap        |void   |sv_dump        |NN SV* sv
 ApdR   |bool   |sv_derived_from|NN SV* sv|NN const char *const name
 ApdR   |bool   |sv_does        |NN SV* sv|NN const char *const name
 Amd    |I32    |sv_eq          |NULLOK SV* sv1|NULLOK SV* sv2
-Apd    |I32    |sv_eq_flags    |NULLOK SV* sv1|NULLOK SV* sv2|const I32 flags
+Apd    |I32    |sv_eq_flags    |NULLOK SV* sv1|NULLOK SV* sv2|const U32 flags
 Apd    |void   |sv_free        |NULLOK SV *const sv
 : FIXME Used in SvREFCNT_dec() but only
 : if defined(__GNUC__) && !defined(PERL_GCC_BRACE_GROUPS_FORBIDDEN)
diff --git a/proto.h b/proto.h
index 9f4046d..2b0905a 100644 (file)
--- a/proto.h
+++ b/proto.h
@@ -3997,9 +3997,9 @@ PERL_CALLCONV void        Perl_sv_clear(pTHX_ SV *const orig_sv)
 PERL_CALLCONV I32      Perl_sv_cmp(pTHX_ SV *const sv1, SV *const sv2);
-PERL_CALLCONV I32      Perl_sv_cmp_flags(pTHX_ SV *const sv1, SV *const sv2, const I32 flags);
+PERL_CALLCONV I32      Perl_sv_cmp_flags(pTHX_ SV *const sv1, SV *const sv2, const U32 flags);
 PERL_CALLCONV I32      Perl_sv_cmp_locale(pTHX_ SV *const sv1, SV *const sv2);
-PERL_CALLCONV I32      Perl_sv_cmp_locale_flags(pTHX_ SV *const sv1, SV *const sv2, const I32 flags);
+PERL_CALLCONV I32      Perl_sv_cmp_locale_flags(pTHX_ SV *const sv1, SV *const sv2, const U32 flags);
 PERL_CALLCONV OP*      Perl_sv_compile_2op(pTHX_ SV *sv, OP **startop, const char *code, PAD **padp)
@@ -4043,7 +4043,7 @@ PERL_CALLCONV void        Perl_sv_dump(pTHX_ SV* sv)
 /* PERL_CALLCONV I32   sv_eq(pTHX_ SV* sv1, SV* sv2); */
-PERL_CALLCONV I32      Perl_sv_eq_flags(pTHX_ SV* sv1, SV* sv2, const I32 flags);
+PERL_CALLCONV I32      Perl_sv_eq_flags(pTHX_ SV* sv1, SV* sv2, const U32 flags);
 /* PERL_CALLCONV void  Perl_sv_force_normal(pTHX_ SV *sv)
                        __attribute__nonnull__(pTHX_1); */
diff --git a/sv.c b/sv.c
index e2d498d..27b4bd6 100644 (file)
--- a/sv.c
+++ b/sv.c
@@ -6989,7 +6989,7 @@ if necessary. If the flags include SV_GMAGIC, it handles get-magic, too.
-Perl_sv_eq_flags(pTHX_ register SV *sv1, register SV *sv2, const I32 flags)
+Perl_sv_eq_flags(pTHX_ register SV *sv1, register SV *sv2, const U32 flags)
     const char *pv1;
@@ -7106,7 +7106,8 @@ Perl_sv_cmp(pTHX_ register SV *const sv1, register SV *const sv2)
-Perl_sv_cmp_flags(pTHX_ register SV *const sv1, register SV *const sv2, const I32 flags)
+Perl_sv_cmp_flags(pTHX_ register SV *const sv1, register SV *const sv2,
+                 const U32 flags)
     STRLEN cur1, cur2;
@@ -7200,7 +7201,8 @@ Perl_sv_cmp_locale(pTHX_ register SV *const sv1, register SV *const sv2)
-Perl_sv_cmp_locale_flags(pTHX_ register SV *const sv1, register SV *const sv2, const I32 flags)
+Perl_sv_cmp_locale_flags(pTHX_ register SV *const sv1, register SV *const sv2,
+                        const U32 flags)