This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
doop.c: Add a parameter to a few fcns
authorKarl Williamson <khw@cpan.org>
Wed, 2 Oct 2019 18:33:01 +0000 (12:33 -0600)
committerKarl Williamson <khw@cpan.org>
Thu, 7 Nov 2019 04:22:24 +0000 (21:22 -0700)
instead of deriving it each time from inside the function.  This is in
preparation for future commits.

doop.c
embed.fnc
embed.h
proto.h

diff --git a/doop.c b/doop.c
index 88e0c31..483d261 100644 (file)
--- a/doop.c
+++ b/doop.c
  */
 
 STATIC Size_t
-S_do_trans_simple(pTHX_ SV * const sv)
+S_do_trans_simple(pTHX_ SV * const sv, const OPtrans_map * const tbl)
 {
     Size_t matches = 0;
     STRLEN len;
     U8 *s = (U8*)SvPV_nomg(sv,len);
     U8 * const send = s+len;
-    const OPtrans_map * const tbl = (OPtrans_map*)cPVOP->op_pv;
 
     PERL_ARGS_ASSERT_DO_TRANS_SIMPLE;
 
-    if (!tbl)
-       Perl_croak(aTHX_ "panic: do_trans_simple line %d",__LINE__);
-
     /* First, take care of non-UTF-8 input strings, because they're easy */
     if (!SvUTF8(sv)) {
        while (s < send) {
@@ -115,19 +111,15 @@ S_do_trans_simple(pTHX_ SV * const sv)
  */
 
 STATIC Size_t
-S_do_trans_count(pTHX_ SV * const sv)
+S_do_trans_count(pTHX_ SV * const sv, const OPtrans_map * const tbl)
 {
     STRLEN len;
     const U8 *s = (const U8*)SvPV_nomg_const(sv, len);
     const U8 * const send = s + len;
     Size_t matches = 0;
-    const OPtrans_map * const tbl = (OPtrans_map*)cPVOP->op_pv;
 
     PERL_ARGS_ASSERT_DO_TRANS_COUNT;
 
-    if (!tbl)
-       Perl_croak(aTHX_ "panic: do_trans_count line %d",__LINE__);
-
     if (!SvUTF8(sv)) {
        while (s < send) {
             if (tbl->map[*s++] >= 0)
@@ -160,19 +152,15 @@ S_do_trans_count(pTHX_ SV * const sv)
  */
 
 STATIC Size_t
-S_do_trans_complex(pTHX_ SV * const sv)
+S_do_trans_complex(pTHX_ SV * const sv, const OPtrans_map * const tbl)
 {
     STRLEN len;
     U8 *s = (U8*)SvPV_nomg(sv, len);
     U8 * const send = s+len;
     Size_t matches = 0;
-    const OPtrans_map * const tbl = (OPtrans_map*)cPVOP->op_pv;
 
     PERL_ARGS_ASSERT_DO_TRANS_COMPLEX;
 
-    if (!tbl)
-       Perl_croak(aTHX_ "panic: do_trans_complex line %d",__LINE__);
-
     if (!SvUTF8(sv)) {
        U8 *d = s;
        U8 * const dstart = d;
@@ -636,11 +624,11 @@ Perl_do_trans(pTHX_ SV *sv)
      * we must also rely on it to choose the readonly strategy.
      */
     if (flags & OPpTRANS_IDENTICAL) {
-        return hasutf ? do_trans_count_utf8(sv) : do_trans_count(sv);
+        return hasutf ? do_trans_count_utf8(sv) : do_trans_count(sv, (OPtrans_map*)cPVOP->op_pv);
     } else if (flags & (OPpTRANS_SQUASH|OPpTRANS_DELETE|OPpTRANS_COMPLEMENT)) {
-        return hasutf ? do_trans_complex_utf8(sv) : do_trans_complex(sv);
+        return hasutf ? do_trans_complex_utf8(sv) : do_trans_complex(sv, (OPtrans_map*)cPVOP->op_pv);
     } else {
-        return hasutf ? do_trans_simple_utf8(sv) : do_trans_simple(sv);
+        return hasutf ? do_trans_simple_utf8(sv) : do_trans_simple(sv, (OPtrans_map*)cPVOP->op_pv);
     }
 }
 
index 0950aeb..3b678c1 100644 (file)
--- a/embed.fnc
+++ b/embed.fnc
@@ -2302,9 +2302,9 @@ Adp       |int    |nothreadhook
 p      |void   |init_constants
 
 #if defined(PERL_IN_DOOP_C)
-SR     |Size_t |do_trans_simple        |NN SV * const sv
-SR     |Size_t |do_trans_count         |NN SV * const sv
-SR     |Size_t |do_trans_complex       |NN SV * const sv
+SR     |Size_t |do_trans_simple        |NN SV * const sv|NN const OPtrans_map * const tbl
+SR     |Size_t |do_trans_count         |NN SV * const sv|NN const OPtrans_map * const tbl
+SR     |Size_t |do_trans_complex       |NN SV * const sv|NN const OPtrans_map * const tbl
 SR     |Size_t |do_trans_simple_utf8   |NN SV * const sv
 SR     |Size_t |do_trans_count_utf8    |NN SV * const sv
 SR     |Size_t |do_trans_complex_utf8  |NN SV * const sv
diff --git a/embed.h b/embed.h
index ae4794f..44f50f1 100644 (file)
--- a/embed.h
+++ b/embed.h
 #define openn_setup(a,b,c,d,e,f)       S_openn_setup(aTHX_ a,b,c,d,e,f)
 #  endif
 #  if defined(PERL_IN_DOOP_C)
-#define do_trans_complex(a)    S_do_trans_complex(aTHX_ a)
+#define do_trans_complex(a,b)  S_do_trans_complex(aTHX_ a,b)
 #define do_trans_complex_utf8(a)       S_do_trans_complex_utf8(aTHX_ a)
-#define do_trans_count(a)      S_do_trans_count(aTHX_ a)
+#define do_trans_count(a,b)    S_do_trans_count(aTHX_ a,b)
 #define do_trans_count_utf8(a) S_do_trans_count_utf8(aTHX_ a)
-#define do_trans_simple(a)     S_do_trans_simple(aTHX_ a)
+#define do_trans_simple(a,b)   S_do_trans_simple(aTHX_ a,b)
 #define do_trans_simple_utf8(a)        S_do_trans_simple_utf8(aTHX_ a)
 #  endif
 #  if defined(PERL_IN_DUMP_C)
diff --git a/proto.h b/proto.h
index 9ba4dd9..4520772 100644 (file)
--- a/proto.h
+++ b/proto.h
@@ -4851,30 +4851,30 @@ STATIC IO *     S_openn_setup(pTHX_ GV *gv, char *mode, PerlIO **saveifp, PerlIO **s
        assert(gv); assert(mode); assert(saveifp); assert(saveofp); assert(savefd); assert(savetype)
 #endif
 #if defined(PERL_IN_DOOP_C)
-STATIC Size_t  S_do_trans_complex(pTHX_ SV * const sv)
+STATIC Size_t  S_do_trans_complex(pTHX_ SV * const sv, const OPtrans_map * const tbl)
                        __attribute__warn_unused_result__;
 #define PERL_ARGS_ASSERT_DO_TRANS_COMPLEX      \
-       assert(sv)
+       assert(sv); assert(tbl)
 
 STATIC Size_t  S_do_trans_complex_utf8(pTHX_ SV * const sv)
                        __attribute__warn_unused_result__;
 #define PERL_ARGS_ASSERT_DO_TRANS_COMPLEX_UTF8 \
        assert(sv)
 
-STATIC Size_t  S_do_trans_count(pTHX_ SV * const sv)
+STATIC Size_t  S_do_trans_count(pTHX_ SV * const sv, const OPtrans_map * const tbl)
                        __attribute__warn_unused_result__;
 #define PERL_ARGS_ASSERT_DO_TRANS_COUNT        \
-       assert(sv)
+       assert(sv); assert(tbl)
 
 STATIC Size_t  S_do_trans_count_utf8(pTHX_ SV * const sv)
                        __attribute__warn_unused_result__;
 #define PERL_ARGS_ASSERT_DO_TRANS_COUNT_UTF8   \
        assert(sv)
 
-STATIC Size_t  S_do_trans_simple(pTHX_ SV * const sv)
+STATIC Size_t  S_do_trans_simple(pTHX_ SV * const sv, const OPtrans_map * const tbl)
                        __attribute__warn_unused_result__;
 #define PERL_ARGS_ASSERT_DO_TRANS_SIMPLE       \
-       assert(sv)
+       assert(sv); assert(tbl)
 
 STATIC Size_t  S_do_trans_simple_utf8(pTHX_ SV * const sv)
                        __attribute__warn_unused_result__;