This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Expose save_pushi32ptr() and implement SAVECOPARYBASE() with it.
[perl5.git] / proto.h
diff --git a/proto.h b/proto.h
index d6869ca..e47177a 100644 (file)
--- a/proto.h
+++ b/proto.h
@@ -3,7 +3,7 @@
  *    proto.h
  *
  *    Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999,
- *    2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, by Larry Wall and others
+ *    2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, by Larry Wall and others
  *
  *    You may distribute under the terms of either the GNU General Public
  *    License or the Artistic License, as specified in the README file.
@@ -175,12 +175,6 @@ PERL_CALLCONV void Perl_av_extend(pTHX_ AV *av, I32 key)
 #define PERL_ARGS_ASSERT_AV_EXTEND     \
        assert(av)
 
-PERL_CALLCONV AV*      Perl_av_fake(pTHX_ I32 size, SV **strp)
-                       __attribute__warn_unused_result__
-                       __attribute__nonnull__(pTHX_2);
-#define PERL_ARGS_ASSERT_AV_FAKE       \
-       assert(strp)
-
 PERL_CALLCONV SV**     Perl_av_fetch(pTHX_ AV *av, I32 key, I32 lval)
                        __attribute__warn_unused_result__
                        __attribute__nonnull__(pTHX_1);
@@ -192,7 +186,7 @@ PERL_CALLCONV void  Perl_av_fill(pTHX_ AV *av, I32 fill)
 #define PERL_ARGS_ASSERT_AV_FILL       \
        assert(av)
 
-PERL_CALLCONV I32      Perl_av_len(pTHX_ const AV *av)
+PERL_CALLCONV I32      Perl_av_len(pTHX_ AV *av)
                        __attribute__warn_unused_result__
                        __attribute__nonnull__(pTHX_1);
 #define PERL_ARGS_ASSERT_AV_LEN        \
@@ -327,13 +321,18 @@ PERL_CALLCONV void        Perl_croak(pTHX_ const char* pat, ...)
 PERL_CALLCONV void     Perl_vcroak(pTHX_ const char* pat, va_list* args)
                        __attribute__noreturn__;
 
+PERL_CALLCONV void     Perl_croak_xs_usage(pTHX_ const CV *const cv, const char *const params)
+                       __attribute__noreturn__
+                       __attribute__nonnull__(pTHX_1)
+                       __attribute__nonnull__(pTHX_2);
+#define PERL_ARGS_ASSERT_CROAK_XS_USAGE        \
+       assert(cv); assert(params)
+
+
 #if defined(PERL_IMPLICIT_CONTEXT)
 PERL_CALLCONV void     Perl_croak_nocontext(const char* pat, ...)
                        __attribute__noreturn__
-                       __attribute__format__(__printf__,1,2)
-                       __attribute__nonnull__(1);
-#define PERL_ARGS_ASSERT_CROAK_NOCONTEXT       \
-       assert(pat)
+                       __attribute__format__null_ok__(__printf__,1,2);
 
 PERL_CALLCONV OP*      Perl_die_nocontext(const char* pat, ...)
                        __attribute__format__(__printf__,1,2)
@@ -376,34 +375,34 @@ PERL_CALLCONV void        Perl_warner_nocontext(U32 err, const char* pat, ...)
 #define PERL_ARGS_ASSERT_WARNER_NOCONTEXT      \
        assert(pat)
 
-PERL_CALLCONV SV*      Perl_newSVpvf_nocontext(const char* pat, ...)
+PERL_CALLCONV SV*      Perl_newSVpvf_nocontext(const char *const pat, ...)
                        __attribute__format__(__printf__,1,2)
                        __attribute__nonnull__(1);
 #define PERL_ARGS_ASSERT_NEWSVPVF_NOCONTEXT    \
        assert(pat)
 
-PERL_CALLCONV void     Perl_sv_catpvf_nocontext(SV* sv, const char* pat, ...)
+PERL_CALLCONV void     Perl_sv_catpvf_nocontext(SV *const sv, const char *const pat, ...)
                        __attribute__format__(__printf__,2,3)
                        __attribute__nonnull__(1)
                        __attribute__nonnull__(2);
 #define PERL_ARGS_ASSERT_SV_CATPVF_NOCONTEXT   \
        assert(sv); assert(pat)
 
-PERL_CALLCONV void     Perl_sv_setpvf_nocontext(SV* sv, const char* pat, ...)
+PERL_CALLCONV void     Perl_sv_setpvf_nocontext(SV *const sv, const char *const pat, ...)
                        __attribute__format__(__printf__,2,3)
                        __attribute__nonnull__(1)
                        __attribute__nonnull__(2);
 #define PERL_ARGS_ASSERT_SV_SETPVF_NOCONTEXT   \
        assert(sv); assert(pat)
 
-PERL_CALLCONV void     Perl_sv_catpvf_mg_nocontext(SV* sv, const char* pat, ...)
+PERL_CALLCONV void     Perl_sv_catpvf_mg_nocontext(SV *const sv, const char *const pat, ...)
                        __attribute__format__(__printf__,2,3)
                        __attribute__nonnull__(1)
                        __attribute__nonnull__(2);
 #define PERL_ARGS_ASSERT_SV_CATPVF_MG_NOCONTEXT        \
        assert(sv); assert(pat)
 
-PERL_CALLCONV void     Perl_sv_setpvf_mg_nocontext(SV* sv, const char* pat, ...)
+PERL_CALLCONV void     Perl_sv_setpvf_mg_nocontext(SV *const sv, const char *const pat, ...)
                        __attribute__format__(__printf__,2,3)
                        __attribute__nonnull__(1)
                        __attribute__nonnull__(2);
@@ -424,11 +423,6 @@ PERL_CALLCONV int  Perl_printf_nocontext(const char *format, ...)
        assert(format)
 
 #endif
-PERL_CALLCONV void     Perl_cv_ckproto(pTHX_ const CV* cv, const GV* gv, const char* p)
-                       __attribute__nonnull__(pTHX_1);
-#define PERL_ARGS_ASSERT_CV_CKPROTO    \
-       assert(cv)
-
 PERL_CALLCONV void     Perl_cv_ckproto_len(pTHX_ const CV* cv, const GV* gv, const char* p, const STRLEN len)
                        __attribute__nonnull__(pTHX_1);
 #define PERL_ARGS_ASSERT_CV_CKPROTO_LEN        \
@@ -445,7 +439,7 @@ PERL_CALLCONV SV*   Perl_gv_const_sv(pTHX_ GV* gv)
 #define PERL_ARGS_ASSERT_GV_CONST_SV   \
        assert(gv)
 
-PERL_CALLCONV SV*      Perl_cv_const_sv(pTHX_ CV* cv)
+PERL_CALLCONV SV*      Perl_cv_const_sv(pTHX_ const CV *const cv)
                        __attribute__warn_unused_result__;
 
 PERL_CALLCONV SV*      Perl_op_const_sv(pTHX_ const OP* o, CV* cv)
@@ -538,7 +532,9 @@ PERL_CALLCONV void  Perl_deprecate_old(pTHX_ const char *const s)
 PERL_CALLCONV OP*      Perl_die(pTHX_ const char* pat, ...)
                        __attribute__format__null_ok__(__printf__,pTHX_1,pTHX_2);
 
-PERL_CALLCONV OP*      Perl_vdie(pTHX_ const char* pat, va_list* args);
+#if defined(PERL_IN_UTIL_C)
+STATIC OP*     S_vdie(pTHX_ const char* pat, va_list* args);
+#endif
 PERL_CALLCONV OP*      Perl_die_where(pTHX_ const char* message, STRLEN msglen);
 PERL_CALLCONV void     Perl_dounwind(pTHX_ I32 cxix);
 /* PERL_CALLCONV bool  Perl_do_aexec(pTHX_ SV* really, SV** mark, SV** sp)
@@ -798,12 +794,14 @@ PERL_CALLCONV char*       Perl_find_script(pTHX_ const char *scriptname, bool dosearch
 #define PERL_ARGS_ASSERT_FIND_SCRIPT   \
        assert(scriptname)
 
-PERL_CALLCONV OP*      Perl_force_list(pTHX_ OP* arg);
-PERL_CALLCONV OP*      Perl_fold_constants(pTHX_ OP *o)
+#if defined(PERL_IN_OP_C)
+STATIC OP*     S_force_list(pTHX_ OP* arg);
+STATIC OP*     S_fold_constants(pTHX_ OP *o)
                        __attribute__nonnull__(pTHX_1);
 #define PERL_ARGS_ASSERT_FOLD_CONSTANTS        \
        assert(o)
 
+#endif
 PERL_CALLCONV char*    Perl_form(pTHX_ const char* pat, ...)
                        __attribute__format__(__printf__,pTHX_1,pTHX_2)
                        __attribute__nonnull__(pTHX_1);
@@ -816,7 +814,9 @@ PERL_CALLCONV char* Perl_vform(pTHX_ const char* pat, va_list* args)
        assert(pat)
 
 PERL_CALLCONV void     Perl_free_tmps(pTHX);
-PERL_CALLCONV OP*      Perl_gen_constant_list(pTHX_ OP* o);
+#if defined(PERL_IN_OP_C)
+STATIC OP*     S_gen_constant_list(pTHX_ OP* o);
+#endif
 #if !defined(HAS_GETENV_LEN)
 PERL_CALLCONV char*    Perl_getenv_len(pTHX_ const char *env_elem, unsigned long *len)
                        __attribute__nonnull__(pTHX_1)
@@ -897,14 +897,22 @@ PERL_CALLCONV GV* Perl_gv_fetchmeth_autoload(pTHX_ HV* stash, const char* name,
        assert(name)
 
 /* PERL_CALLCONV GV*   Perl_gv_fetchmethod(pTHX_ HV* stash, const char* name)
+                       __attribute__nonnull__(pTHX_1)
                        __attribute__nonnull__(pTHX_2); */
 #define PERL_ARGS_ASSERT_GV_FETCHMETHOD        \
-       assert(name)
+       assert(stash); assert(name)
 
 PERL_CALLCONV GV*      Perl_gv_fetchmethod_autoload(pTHX_ HV* stash, const char* name, I32 autoload)
+                       __attribute__nonnull__(pTHX_1)
                        __attribute__nonnull__(pTHX_2);
 #define PERL_ARGS_ASSERT_GV_FETCHMETHOD_AUTOLOAD       \
-       assert(name)
+       assert(stash); assert(name)
+
+PERL_CALLCONV GV*      Perl_gv_fetchmethod_flags(pTHX_ HV* stash, const char* name, U32 flags)
+                       __attribute__nonnull__(pTHX_1)
+                       __attribute__nonnull__(pTHX_2);
+#define PERL_ARGS_ASSERT_GV_FETCHMETHOD_FLAGS  \
+       assert(stash); assert(name)
 
 PERL_CALLCONV GV*      Perl_gv_fetchpv(pTHX_ const char *nambeg, I32 add, const svtype sv_type)
                        __attribute__nonnull__(pTHX_1);
@@ -1070,6 +1078,14 @@ PERL_CALLCONV HV *       Perl_refcounted_he_chain_2hv(pTHX_ const struct refcounted_he
 PERL_CALLCONV SV *     Perl_refcounted_he_fetch(pTHX_ const struct refcounted_he *chain, SV *keysv, const char *key, STRLEN klen, int flags, U32 hash);
 PERL_CALLCONV void     Perl_refcounted_he_free(pTHX_ struct refcounted_he *he);
 PERL_CALLCONV struct refcounted_he *   Perl_refcounted_he_new(pTHX_ struct refcounted_he *const parent, SV *const key, SV *const value);
+#if defined(PERL_IN_HV_C) || defined(PERL_DECL_PROT)
+STATIC struct refcounted_he *  S_refcounted_he_new_common(pTHX_ struct refcounted_he *const parent, const char *const key_p, const STRLEN key_len, const char flags, char value_type, const void *value, const STRLEN value_len)
+                       __attribute__nonnull__(pTHX_2)
+                       __attribute__nonnull__(pTHX_6);
+#define PERL_ARGS_ASSERT_REFCOUNTED_HE_NEW_COMMON      \
+       assert(key_p); assert(value)
+
+#endif
 /* PERL_CALLCONV SV**  Perl_hv_store(pTHX_ HV *hv, const char *key, I32 klen, SV *val, U32 hash); */
 /* PERL_CALLCONV HE*   Perl_hv_store_ent(pTHX_ HV *hv, SV *key, SV *val, U32 hash); */
 /* PERL_CALLCONV SV**  Perl_hv_store_flags(pTHX_ HV *hv, const char *key, I32 klen, SV *val, U32 hash, int flags); */
@@ -1094,9 +1110,11 @@ PERL_CALLCONV I32        Perl_ibcmp_utf8(pTHX_ const char *s1, char **pe1, UV l1, bool
 #define PERL_ARGS_ASSERT_IBCMP_UTF8    \
        assert(s1); assert(s2)
 
-PERL_CALLCONV bool     Perl_ingroup(pTHX_ Gid_t testgid, bool effective)
+#if defined(PERL_IN_DOIO_C)
+STATIC bool    S_ingroup(pTHX_ Gid_t testgid, bool effective)
                        __attribute__warn_unused_result__;
 
+#endif
 PERL_CALLCONV void     Perl_init_argv_symbols(pTHX_ int argc, char **argv)
                        __attribute__nonnull__(pTHX_2);
 #define PERL_ARGS_ASSERT_INIT_ARGV_SYMBOLS     \
@@ -1126,12 +1144,6 @@ PERL_CALLCONV bool       Perl_io_close(pTHX_ IO* io, bool not_implicit)
 PERL_CALLCONV OP*      Perl_invert(pTHX_ OP* cmd)
                        __attribute__warn_unused_result__;
 
-PERL_CALLCONV bool     Perl_is_gv_magical(pTHX_ const char *name, STRLEN len, U32 flags)
-                       __attribute__warn_unused_result__
-                       __attribute__nonnull__(pTHX_1);
-#define PERL_ARGS_ASSERT_IS_GV_MAGICAL \
-       assert(name)
-
 PERL_CALLCONV I32      Perl_is_lvalue_sub(pTHX)
                        __attribute__warn_unused_result__;
 
@@ -1425,13 +1437,15 @@ PERL_CALLCONV void      Perl_op_clear(pTHX_ OP* o)
 
 PERL_CALLCONV void     Perl_op_refcnt_lock(pTHX);
 PERL_CALLCONV void     Perl_op_refcnt_unlock(pTHX);
-PERL_CALLCONV OP*      Perl_linklist(pTHX_ OP* o)
+#if defined(PERL_IN_OP_C)
+STATIC OP*     S_linklist(pTHX_ OP *o)
                        __attribute__nonnull__(pTHX_1);
 #define PERL_ARGS_ASSERT_LINKLIST      \
        assert(o)
 
+STATIC OP*     S_listkids(pTHX_ OP* o);
+#endif
 PERL_CALLCONV OP*      Perl_list(pTHX_ OP* o);
-PERL_CALLCONV OP*      Perl_listkids(pTHX_ OP* o);
 PERL_CALLCONV void     Perl_load_module(pTHX_ U32 flags, SV* name, SV* ver, ...)
                        __attribute__nonnull__(pTHX_2);
 #define PERL_ARGS_ASSERT_LOAD_MODULE   \
@@ -1770,11 +1784,6 @@ PERL_CALLCONV int        Perl_magic_wipepack(pTHX_ SV* sv, MAGIC* mg)
 #define PERL_ARGS_ASSERT_MAGIC_WIPEPACK        \
        assert(sv); assert(mg)
 
-PERL_CALLCONV void     Perl_magicname(pTHX_ const char* sym, const char* name, I32 namlen)
-                       __attribute__nonnull__(pTHX_1);
-#define PERL_ARGS_ASSERT_MAGICNAME     \
-       assert(sym)
-
 PERL_CALLCONV void     Perl_markstack_grow(pTHX);
 #if defined(USE_LOCALE_COLLATE)
 PERL_CALLCONV int      Perl_magic_setcollxfrm(pTHX_ SV* sv, MAGIC* mg)
@@ -1827,7 +1836,7 @@ PERL_CALLCONV int Perl_mg_copy(pTHX_ SV *sv, SV *nsv, const char *key, I32 klen)
 #define PERL_ARGS_ASSERT_MG_COPY       \
        assert(sv); assert(nsv)
 
-PERL_CALLCONV void     Perl_mg_localize(pTHX_ SV* sv, SV* nsv)
+PERL_CALLCONV void     Perl_mg_localize(pTHX_ SV* sv, SV* nsv, bool setmagic)
                        __attribute__nonnull__(pTHX_1)
                        __attribute__nonnull__(pTHX_2);
 #define PERL_ARGS_ASSERT_MG_LOCALIZE   \
@@ -1872,17 +1881,12 @@ PERL_CALLCONV void      Perl_mini_mktime(pTHX_ struct tm *ptm)
        assert(ptm)
 
 PERL_CALLCONV OP*      Perl_mod(pTHX_ OP* o, I32 type);
-PERL_CALLCONV int      Perl_mode_from_discipline(pTHX_ SV* discp);
+PERL_CALLCONV int      Perl_mode_from_discipline(pTHX_ const char* s, STRLEN len);
 PERL_CALLCONV const char*      Perl_moreswitches(pTHX_ const char* s)
                        __attribute__nonnull__(pTHX_1);
 #define PERL_ARGS_ASSERT_MORESWITCHES  \
        assert(s)
 
-PERL_CALLCONV OP*      Perl_my(pTHX_ OP* o)
-                       __attribute__nonnull__(pTHX_1);
-#define PERL_ARGS_ASSERT_MY    \
-       assert(o)
-
 PERL_CALLCONV NV       Perl_my_atof(pTHX_ const char *s)
                        __attribute__nonnull__(pTHX_1);
 #define PERL_ARGS_ASSERT_MY_ATOF       \
@@ -2145,14 +2149,14 @@ PERL_CALLCONV OP*       Perl_newPVOP(pTHX_ I32 type, I32 flags, char* pv)
                        __attribute__malloc__
                        __attribute__warn_unused_result__;
 
-PERL_CALLCONV SV*      Perl_newRV(pTHX_ SV* sv)
+PERL_CALLCONV SV*      Perl_newRV(pTHX_ SV *const sv)
                        __attribute__malloc__
                        __attribute__warn_unused_result__
                        __attribute__nonnull__(pTHX_1);
 #define PERL_ARGS_ASSERT_NEWRV \
        assert(sv)
 
-PERL_CALLCONV SV*      Perl_newRV_noinc(pTHX_ SV* sv)
+PERL_CALLCONV SV*      Perl_newRV_noinc(pTHX_ SV *const sv)
                        __attribute__malloc__
                        __attribute__warn_unused_result__
                        __attribute__nonnull__(pTHX_1);
@@ -2177,31 +2181,31 @@ PERL_CALLCONV OP*       Perl_newSVOP(pTHX_ I32 type, I32 flags, SV* sv)
 #define PERL_ARGS_ASSERT_NEWSVOP       \
        assert(sv)
 
-PERL_CALLCONV SV*      Perl_newSViv(pTHX_ IV i)
+PERL_CALLCONV SV*      Perl_newSViv(pTHX_ const IV i)
                        __attribute__malloc__
                        __attribute__warn_unused_result__;
 
-PERL_CALLCONV SV*      Perl_newSVuv(pTHX_ UV u)
+PERL_CALLCONV SV*      Perl_newSVuv(pTHX_ const UV u)
                        __attribute__malloc__
                        __attribute__warn_unused_result__;
 
-PERL_CALLCONV SV*      Perl_newSVnv(pTHX_ NV n)
+PERL_CALLCONV SV*      Perl_newSVnv(pTHX_ const NV n)
                        __attribute__malloc__
                        __attribute__warn_unused_result__;
 
-PERL_CALLCONV SV*      Perl_newSVpv(pTHX_ const char* s, STRLEN len)
+PERL_CALLCONV SV*      Perl_newSVpv(pTHX_ const char *const s, const STRLEN len)
                        __attribute__malloc__
                        __attribute__warn_unused_result__;
 
-PERL_CALLCONV SV*      Perl_newSVpvn(pTHX_ const char* s, STRLEN len)
+PERL_CALLCONV SV*      Perl_newSVpvn(pTHX_ const char *const s, const STRLEN len)
                        __attribute__malloc__
                        __attribute__warn_unused_result__;
 
-PERL_CALLCONV SV*      Perl_newSVpvn_flags(pTHX_ const char* s, STRLEN len, U32 flags)
+PERL_CALLCONV SV*      Perl_newSVpvn_flags(pTHX_ const char *const s, const STRLEN len, const U32 flags)
                        __attribute__malloc__
                        __attribute__warn_unused_result__;
 
-PERL_CALLCONV SV*      Perl_newSVhek(pTHX_ const HEK *hek)
+PERL_CALLCONV SV*      Perl_newSVhek(pTHX_ const HEK *const hek)
                        __attribute__malloc__
                        __attribute__warn_unused_result__;
 
@@ -2209,7 +2213,7 @@ PERL_CALLCONV SV* Perl_newSVpvn_share(pTHX_ const char* s, I32 len, U32 hash)
                        __attribute__malloc__
                        __attribute__warn_unused_result__;
 
-PERL_CALLCONV SV*      Perl_newSVpvf(pTHX_ const char* pat, ...)
+PERL_CALLCONV SV*      Perl_newSVpvf(pTHX_ const char *const pat, ...)
                        __attribute__malloc__
                        __attribute__warn_unused_result__
                        __attribute__format__(__printf__,pTHX_1,pTHX_2)
@@ -2217,19 +2221,19 @@ PERL_CALLCONV SV*       Perl_newSVpvf(pTHX_ const char* pat, ...)
 #define PERL_ARGS_ASSERT_NEWSVPVF      \
        assert(pat)
 
-PERL_CALLCONV SV*      Perl_vnewSVpvf(pTHX_ const char* pat, va_list* args)
+PERL_CALLCONV SV*      Perl_vnewSVpvf(pTHX_ const char *const pat, va_list *const args)
                        __attribute__malloc__
                        __attribute__warn_unused_result__
                        __attribute__nonnull__(pTHX_1);
 #define PERL_ARGS_ASSERT_VNEWSVPVF     \
        assert(pat)
 
-PERL_CALLCONV SV*      Perl_newSVrv(pTHX_ SV* rv, const char* classname)
+PERL_CALLCONV SV*      Perl_newSVrv(pTHX_ SV *const rv, const char *const classname)
                        __attribute__nonnull__(pTHX_1);
 #define PERL_ARGS_ASSERT_NEWSVRV       \
        assert(rv)
 
-PERL_CALLCONV SV*      Perl_newSVsv(pTHX_ SV* old)
+PERL_CALLCONV SV*      Perl_newSVsv(pTHX_ SV *const old)
                        __attribute__malloc__
                        __attribute__warn_unused_result__;
 
@@ -2319,12 +2323,6 @@ PERL_CALLCONV char*      Perl_ninstr(pTHX_ const char* big, const char* bigend, const
 #define PERL_ARGS_ASSERT_NINSTR        \
        assert(big); assert(bigend); assert(little); assert(lend)
 
-PERL_CALLCONV OP*      Perl_oopsCV(pTHX_ OP* o)
-                       __attribute__noreturn__
-                       __attribute__nonnull__(pTHX_1);
-#define PERL_ARGS_ASSERT_OOPSCV        \
-       assert(o)
-
 PERL_CALLCONV void     Perl_op_free(pTHX_ OP* arg);
 #ifdef PERL_MAD
 PERL_CALLCONV OP*      Perl_package(pTHX_ OP* o)
@@ -2367,7 +2365,9 @@ PERL_CALLCONV OP* Perl_oopsHV(pTHX_ OP* o)
 PERL_CALLCONV void     Perl_pad_leavemy(pTHX);
 PERL_CALLCONV SV*      Perl_pad_sv(pTHX_ PADOFFSET po);
 PERL_CALLCONV void     Perl_pad_free(pTHX_ PADOFFSET po);
-PERL_CALLCONV void     Perl_pad_reset(pTHX);
+#if defined(PERL_IN_PAD_C)
+STATIC void    S_pad_reset(pTHX);
+#endif
 PERL_CALLCONV void     Perl_pad_swipe(pTHX_ PADOFFSET po, bool refadjust);
 PERL_CALLCONV void     Perl_peep(pTHX_ OP* o);
 PERL_CALLCONV PerlIO*  Perl_start_glob(pTHX_ SV *tmpglob, IO *io)
@@ -2485,8 +2485,8 @@ PERL_CALLCONV void        Perl_packlist(pTHX_ SV *cat, const char *pat, const char *pat
 #define PERL_ARGS_ASSERT_PACKLIST      \
        assert(cat); assert(pat); assert(patend); assert(beglist); assert(endlist)
 
-#ifdef PERL_USES_PL_PIDSTATUS
-PERL_CALLCONV void     Perl_pidgone(pTHX_ Pid_t pid, int status);
+#if defined(PERL_USES_PL_PIDSTATUS) && defined(PERL_IN_UTIL_C)
+STATIC void    S_pidgone(pTHX_ Pid_t pid, int status);
 #endif
 PERL_CALLCONV void     Perl_pmflag(pTHX_ U32* pmfl, int ch)
                        __attribute__nonnull__(pTHX_1);
@@ -2499,18 +2499,22 @@ PERL_CALLCONV OP*       Perl_pmruntime(pTHX_ OP *o, OP *expr, bool isreg)
 #define PERL_ARGS_ASSERT_PMRUNTIME     \
        assert(o); assert(expr)
 
-PERL_CALLCONV OP*      Perl_pmtrans(pTHX_ OP* o, OP* expr, OP* repl)
+#if defined(PERL_IN_OP_C)
+STATIC OP*     S_pmtrans(pTHX_ OP* o, OP* expr, OP* repl)
                        __attribute__nonnull__(pTHX_1)
                        __attribute__nonnull__(pTHX_2)
                        __attribute__nonnull__(pTHX_3);
 #define PERL_ARGS_ASSERT_PMTRANS       \
        assert(o); assert(expr); assert(repl)
 
+#endif
 PERL_CALLCONV void     Perl_pop_scope(pTHX);
 PERL_CALLCONV OP*      Perl_prepend_elem(pTHX_ I32 optype, OP* head, OP* tail);
 PERL_CALLCONV void     Perl_push_scope(pTHX);
 /* PERL_CALLCONV OP*   Perl_ref(pTHX_ OP* o, I32 type); */
-PERL_CALLCONV OP*      Perl_refkids(pTHX_ OP* o, I32 type);
+#if defined(PERL_IN_OP_C)
+STATIC OP*     S_refkids(pTHX_ OP* o, I32 type);
+#endif
 PERL_CALLCONV void     Perl_regdump(pTHX_ const regexp* r)
                        __attribute__nonnull__(pTHX_1);
 #define PERL_ARGS_ASSERT_REGDUMP       \
@@ -2559,12 +2563,12 @@ PERL_CALLCONV void*     Perl_regdupe_internal(pTHX_ REGEXP * const r, CLONE_PARAMS*
        assert(r); assert(param)
 
 #endif
-PERL_CALLCONV REGEXP*  Perl_pregcomp(pTHX_ const SV * const pattern, const U32 flags)
+PERL_CALLCONV REGEXP*  Perl_pregcomp(pTHX_ SV * const pattern, const U32 flags)
                        __attribute__nonnull__(pTHX_1);
 #define PERL_ARGS_ASSERT_PREGCOMP      \
        assert(pattern)
 
-PERL_CALLCONV REGEXP*  Perl_re_compile(pTHX_ const SV * const pattern, U32 flags)
+PERL_CALLCONV REGEXP*  Perl_re_compile(pTHX_ SV * const pattern, U32 flags)
                        __attribute__nonnull__(pTHX_1);
 #define PERL_ARGS_ASSERT_RE_COMPILE    \
        assert(pattern)
@@ -2689,17 +2693,19 @@ PERL_CALLCONV int       Perl_rsignal_save(pTHX_ int i, Sighandler_t t1, Sigsave_t* sav
        assert(save)
 
 PERL_CALLCONV Sighandler_t     Perl_rsignal_state(pTHX_ int i);
-PERL_CALLCONV void     Perl_rxres_free(pTHX_ void** rsp)
+#if defined(PERL_IN_PP_CTL_C)
+STATIC void    S_rxres_free(pTHX_ void** rsp)
                        __attribute__nonnull__(pTHX_1);
 #define PERL_ARGS_ASSERT_RXRES_FREE    \
        assert(rsp)
 
-PERL_CALLCONV void     Perl_rxres_restore(pTHX_ void **rsp, REGEXP *rx)
+STATIC void    S_rxres_restore(pTHX_ void **rsp, REGEXP *rx)
                        __attribute__nonnull__(pTHX_1)
                        __attribute__nonnull__(pTHX_2);
 #define PERL_ARGS_ASSERT_RXRES_RESTORE \
        assert(rsp); assert(rx)
 
+#endif
 PERL_CALLCONV void     Perl_rxres_save(pTHX_ void **rsp, REGEXP *rx)
                        __attribute__nonnull__(pTHX_1)
                        __attribute__nonnull__(pTHX_2);
@@ -2781,9 +2787,9 @@ PERL_CALLCONV void        Perl_save_destructor(pTHX_ DESTRUCTORFUNC_NOCONTEXT_t f, void
        assert(p)
 
 PERL_CALLCONV void     Perl_save_destructor_x(pTHX_ DESTRUCTORFUNC_t f, void* p);
-PERL_CALLCONV void     Perl_save_freesv(pTHX_ SV* sv);
-PERL_CALLCONV void     Perl_save_freeop(pTHX_ OP* o);
-PERL_CALLCONV void     Perl_save_freepv(pTHX_ char* pv);
+/* PERL_CALLCONV void  Perl_save_freesv(pTHX_ SV* sv); */
+/* PERL_CALLCONV void  Perl_save_freeop(pTHX_ OP* o); */
+/* PERL_CALLCONV void  Perl_save_freepv(pTHX_ char* pv); */
 PERL_CALLCONV void     Perl_save_generic_svref(pTHX_ SV** sptr)
                        __attribute__nonnull__(pTHX_1);
 #define PERL_ARGS_ASSERT_SAVE_GENERIC_SVREF    \
@@ -2809,13 +2815,20 @@ PERL_CALLCONV HV*       Perl_save_hash(pTHX_ GV* gv)
 #define PERL_ARGS_ASSERT_SAVE_HASH     \
        assert(gv)
 
-PERL_CALLCONV void     Perl_save_helem(pTHX_ HV *hv, SV *key, SV **sptr)
+/* PERL_CALLCONV void  Perl_save_helem(pTHX_ HV *hv, SV *key, SV **sptr)
                        __attribute__nonnull__(pTHX_1)
                        __attribute__nonnull__(pTHX_2)
-                       __attribute__nonnull__(pTHX_3);
+                       __attribute__nonnull__(pTHX_3); */
 #define PERL_ARGS_ASSERT_SAVE_HELEM    \
        assert(hv); assert(key); assert(sptr)
 
+PERL_CALLCONV void     Perl_save_helem_flags(pTHX_ HV *hv, SV *key, SV **sptr, const U32 flags)
+                       __attribute__nonnull__(pTHX_1)
+                       __attribute__nonnull__(pTHX_2)
+                       __attribute__nonnull__(pTHX_3);
+#define PERL_ARGS_ASSERT_SAVE_HELEM_FLAGS      \
+       assert(hv); assert(key); assert(sptr)
+
 PERL_CALLCONV void     Perl_save_hptr(pTHX_ HV** hptr)
                        __attribute__nonnull__(pTHX_1);
 #define PERL_ARGS_ASSERT_SAVE_HPTR     \
@@ -2861,8 +2874,8 @@ PERL_CALLCONV void        Perl_save_long(pTHX_ long* longp)
 #define PERL_ARGS_ASSERT_SAVE_LONG     \
        assert(longp)
 
-PERL_CALLCONV void     Perl_save_mortalizesv(pTHX_ SV* sv)
-                       __attribute__nonnull__(pTHX_1);
+/* PERL_CALLCONV void  Perl_save_mortalizesv(pTHX_ SV* sv)
+                       __attribute__nonnull__(pTHX_1); */
 #define PERL_ARGS_ASSERT_SAVE_MORTALIZESV      \
        assert(sv)
 
@@ -2871,7 +2884,7 @@ PERL_CALLCONV void        Perl_save_nogv(pTHX_ GV* gv)
 #define PERL_ARGS_ASSERT_SAVE_NOGV     \
        assert(gv)
 
-PERL_CALLCONV void     Perl_save_op(pTHX);
+/* PERL_CALLCONV void  Perl_save_op(pTHX); */
 PERL_CALLCONV SV*      Perl_save_scalar(pTHX_ GV* gv)
                        __attribute__nonnull__(pTHX_1);
 #define PERL_ARGS_ASSERT_SAVE_SCALAR   \
@@ -2899,10 +2912,15 @@ PERL_CALLCONV SV*       Perl_save_svref(pTHX_ SV** sptr)
 #define PERL_ARGS_ASSERT_SAVE_SVREF    \
        assert(sptr)
 
+PERL_CALLCONV void     Perl_save_pushptr(pTHX_ void *const ptr, const int type);
+PERL_CALLCONV void     Perl_save_pushi32ptr(pTHX_ I32 i, void *const ptr, const int type);
+PERL_CALLCONV void     Perl_save_pushptrptr(pTHX_ void *const ptr1, void *const ptr2, const int type);
 PERL_CALLCONV OP*      Perl_sawparens(pTHX_ OP* o);
 PERL_CALLCONV OP*      Perl_scalar(pTHX_ OP* o);
-PERL_CALLCONV OP*      Perl_scalarkids(pTHX_ OP* o);
-PERL_CALLCONV OP*      Perl_scalarseq(pTHX_ OP* o);
+#if defined(PERL_IN_OP_C)
+STATIC OP*     S_scalarkids(pTHX_ OP* o);
+STATIC OP*     S_scalarseq(pTHX_ OP* o);
+#endif
 PERL_CALLCONV OP*      Perl_scalarvoid(pTHX_ OP* o)
                        __attribute__nonnull__(pTHX_1);
 #define PERL_ARGS_ASSERT_SCALARVOID    \
@@ -2940,8 +2958,8 @@ PERL_CALLCONV char*       Perl_screaminstr(pTHX_ SV *bigstr, SV *littlestr, I32 start_
 #define PERL_ARGS_ASSERT_SCREAMINSTR   \
        assert(bigstr); assert(littlestr); assert(old_posp)
 
-#if !defined(VMS)
-PERL_CALLCONV I32      Perl_setenv_getix(pTHX_ const char* nam)
+#if !defined(VMS) && defined(PERL_IN_UTIL_C)
+STATIC I32     S_setenv_getix(pTHX_ const char* nam)
                        __attribute__nonnull__(pTHX_1);
 #define PERL_ARGS_ASSERT_SETENV_GETIX  \
        assert(nam)
@@ -2977,13 +2995,13 @@ PERL_CALLCONV bool      Perl_sv_2bool(pTHX_ SV *const sv)
 #define PERL_ARGS_ASSERT_SV_2BOOL      \
        assert(sv)
 
-PERL_CALLCONV CV*      Perl_sv_2cv(pTHX_ SV* sv, HV** st, GV** gvp, I32 lref)
+PERL_CALLCONV CV*      Perl_sv_2cv(pTHX_ SV* sv, HV **const st, GV **const gvp, const I32 lref)
                        __attribute__nonnull__(pTHX_2)
                        __attribute__nonnull__(pTHX_3);
 #define PERL_ARGS_ASSERT_SV_2CV        \
        assert(st); assert(gvp)
 
-PERL_CALLCONV IO*      Perl_sv_2io(pTHX_ SV* sv)
+PERL_CALLCONV IO*      Perl_sv_2io(pTHX_ SV *const sv)
                        __attribute__nonnull__(pTHX_1);
 #define PERL_ARGS_ASSERT_SV_2IO        \
        assert(sv)
@@ -3002,7 +3020,7 @@ STATIC char*      S_glob_2pv(pTHX_ GV* const gv, STRLEN * const len)
 #endif
 /* PERL_CALLCONV IV    Perl_sv_2iv(pTHX_ SV *sv); */
 PERL_CALLCONV IV       Perl_sv_2iv_flags(pTHX_ SV *const sv, const I32 flags);
-PERL_CALLCONV SV*      Perl_sv_2mortal(pTHX_ SV* sv);
+PERL_CALLCONV SV*      Perl_sv_2mortal(pTHX_ SV *const sv);
 PERL_CALLCONV NV       Perl_sv_2nv(pTHX_ SV *const sv);
 PERL_CALLCONV SV*      Perl_sv_2num(pTHX_ SV *const sv)
                        __attribute__nonnull__(pTHX_1);
@@ -3061,31 +3079,33 @@ PERL_CALLCONV char*     Perl_sv_pvbyten(pTHX_ SV *sv, STRLEN *lp)
 #define PERL_ARGS_ASSERT_SV_PVBYTEN    \
        assert(sv); assert(lp)
 
-PERL_CALLCONV I32      Perl_sv_true(pTHX_ SV *sv);
-PERL_CALLCONV void     Perl_sv_add_arena(pTHX_ char *const ptr, const U32 size, const U32 flags)
+PERL_CALLCONV I32      Perl_sv_true(pTHX_ SV *const sv);
+#if defined (PERL_IN_SV_C)
+STATIC void    S_sv_add_arena(pTHX_ char *const ptr, const U32 size, const U32 flags)
                        __attribute__nonnull__(pTHX_1);
 #define PERL_ARGS_ASSERT_SV_ADD_ARENA  \
        assert(ptr)
 
+#endif
 PERL_CALLCONV int      Perl_sv_backoff(pTHX_ SV *const sv)
                        __attribute__nonnull__(pTHX_1);
 #define PERL_ARGS_ASSERT_SV_BACKOFF    \
        assert(sv)
 
-PERL_CALLCONV SV*      Perl_sv_bless(pTHX_ SV* sv, HV* stash)
+PERL_CALLCONV SV*      Perl_sv_bless(pTHX_ SV *const sv, HV *const stash)
                        __attribute__nonnull__(pTHX_1)
                        __attribute__nonnull__(pTHX_2);
 #define PERL_ARGS_ASSERT_SV_BLESS      \
        assert(sv); assert(stash)
 
-PERL_CALLCONV void     Perl_sv_catpvf(pTHX_ SV* sv, const char* pat, ...)
+PERL_CALLCONV void     Perl_sv_catpvf(pTHX_ SV *const sv, const char *const pat, ...)
                        __attribute__format__(__printf__,pTHX_2,pTHX_3)
                        __attribute__nonnull__(pTHX_1)
                        __attribute__nonnull__(pTHX_2);
 #define PERL_ARGS_ASSERT_SV_CATPVF     \
        assert(sv); assert(pat)
 
-PERL_CALLCONV void     Perl_sv_vcatpvf(pTHX_ SV* sv, const char* pat, va_list* args)
+PERL_CALLCONV void     Perl_sv_vcatpvf(pTHX_ SV *const sv, const char *const pat, va_list *const args)
                        __attribute__nonnull__(pTHX_1)
                        __attribute__nonnull__(pTHX_2);
 #define PERL_ARGS_ASSERT_SV_VCATPVF    \
@@ -3119,10 +3139,10 @@ PERL_CALLCONV void      Perl_sv_clear(pTHX_ SV *const sv)
 #define PERL_ARGS_ASSERT_SV_CLEAR      \
        assert(sv)
 
-PERL_CALLCONV I32      Perl_sv_cmp(pTHX_ SV* sv1, SV* sv2);
-PERL_CALLCONV I32      Perl_sv_cmp_locale(pTHX_ SV* sv1, SV* sv2);
+PERL_CALLCONV I32      Perl_sv_cmp(pTHX_ SV *const sv1, SV *const sv2);
+PERL_CALLCONV I32      Perl_sv_cmp_locale(pTHX_ SV *const sv1, SV *const sv2);
 #if defined(USE_LOCALE_COLLATE)
-PERL_CALLCONV char*    Perl_sv_collxfrm(pTHX_ SV* sv, STRLEN* nxp)
+PERL_CALLCONV char*    Perl_sv_collxfrm(pTHX_ SV *const sv, STRLEN *const nxp)
                        __attribute__nonnull__(pTHX_1)
                        __attribute__nonnull__(pTHX_2);
 #define PERL_ARGS_ASSERT_SV_COLLXFRM   \
@@ -3142,7 +3162,7 @@ PERL_CALLCONV int Perl_getcwd_sv(pTHX_ SV* sv)
 #define PERL_ARGS_ASSERT_GETCWD_SV     \
        assert(sv)
 
-PERL_CALLCONV void     Perl_sv_dec(pTHX_ SV* sv);
+PERL_CALLCONV void     Perl_sv_dec(pTHX_ SV *const sv);
 PERL_CALLCONV void     Perl_sv_dump(pTHX_ SV* sv)
                        __attribute__nonnull__(pTHX_1);
 #define PERL_ARGS_ASSERT_SV_DUMP       \
@@ -3170,7 +3190,7 @@ PERL_CALLCONV void        Perl_sv_free2(pTHX_ SV *const sv)
        assert(sv)
 
 PERL_CALLCONV void     Perl_sv_free_arenas(pTHX);
-PERL_CALLCONV char*    Perl_sv_gets(pTHX_ SV* sv, PerlIO* fp, I32 append)
+PERL_CALLCONV char*    Perl_sv_gets(pTHX_ SV *const sv, PerlIO *const fp, I32 append)
                        __attribute__nonnull__(pTHX_1)
                        __attribute__nonnull__(pTHX_2);
 #define PERL_ARGS_ASSERT_SV_GETS       \
@@ -3181,14 +3201,20 @@ PERL_CALLCONV char*     Perl_sv_grow(pTHX_ SV *const sv, STRLEN newlen)
 #define PERL_ARGS_ASSERT_SV_GROW       \
        assert(sv)
 
-PERL_CALLCONV void     Perl_sv_inc(pTHX_ SV* sv);
-PERL_CALLCONV void     Perl_sv_insert(pTHX_ SV *const bigstr, const STRLEN offset, const STRLEN len, const char *const little, const STRLEN littlelen)
+PERL_CALLCONV void     Perl_sv_inc(pTHX_ SV *const sv);
+/* PERL_CALLCONV void  Perl_sv_insert(pTHX_ SV *const bigstr, const STRLEN offset, const STRLEN len, const char *const little, const STRLEN littlelen)
                        __attribute__nonnull__(pTHX_1)
-                       __attribute__nonnull__(pTHX_4);
+                       __attribute__nonnull__(pTHX_4); */
 #define PERL_ARGS_ASSERT_SV_INSERT     \
        assert(bigstr); assert(little)
 
-PERL_CALLCONV int      Perl_sv_isa(pTHX_ SV* sv, const char* name)
+PERL_CALLCONV void     Perl_sv_insert_flags(pTHX_ SV *const bigstr, const STRLEN offset, const STRLEN len, const char *const little, const STRLEN littlelen, const U32 flags)
+                       __attribute__nonnull__(pTHX_1)
+                       __attribute__nonnull__(pTHX_4);
+#define PERL_ARGS_ASSERT_SV_INSERT_FLAGS       \
+       assert(bigstr); assert(little)
+
+PERL_CALLCONV int      Perl_sv_isa(pTHX_ SV* sv, const char *const name)
                        __attribute__nonnull__(pTHX_2);
 #define PERL_ARGS_ASSERT_SV_ISA        \
        assert(name)
@@ -3196,7 +3222,7 @@ PERL_CALLCONV int Perl_sv_isa(pTHX_ SV* sv, const char* name)
 PERL_CALLCONV int      Perl_sv_isobject(pTHX_ SV* sv);
 PERL_CALLCONV STRLEN   Perl_sv_len(pTHX_ SV *const sv);
 PERL_CALLCONV STRLEN   Perl_sv_len_utf8(pTHX_ SV *const sv);
-PERL_CALLCONV void     Perl_sv_magic(pTHX_ SV *const sv, SV *const obj, const int how, const char *const name, I32 namlen)
+PERL_CALLCONV void     Perl_sv_magic(pTHX_ SV *const sv, SV *const obj, const int how, const char *const name, const I32 namlen)
                        __attribute__nonnull__(pTHX_1);
 #define PERL_ARGS_ASSERT_SV_MAGIC      \
        assert(sv)
@@ -3206,7 +3232,7 @@ PERL_CALLCONV MAGIC *     Perl_sv_magicext(pTHX_ SV *const sv, SV *const obj, const
 #define PERL_ARGS_ASSERT_SV_MAGICEXT   \
        assert(sv)
 
-PERL_CALLCONV SV*      Perl_sv_mortalcopy(pTHX_ SV* oldsv)
+PERL_CALLCONV SV*      Perl_sv_mortalcopy(pTHX_ SV *const oldsv)
                        __attribute__malloc__
                        __attribute__warn_unused_result__;
 
@@ -3220,7 +3246,7 @@ PERL_CALLCONV void        Perl_sv_pos_u2b(pTHX_ SV *const sv, I32 *const offsetp, I32 *
 #define PERL_ARGS_ASSERT_SV_POS_U2B    \
        assert(offsetp)
 
-PERL_CALLCONV void     Perl_sv_pos_b2u(pTHX_ SV* sv, I32* offsetp)
+PERL_CALLCONV void     Perl_sv_pos_b2u(pTHX_ SV *const sv, I32 *const offsetp)
                        __attribute__nonnull__(pTHX_2);
 #define PERL_ARGS_ASSERT_SV_POS_B2U    \
        assert(offsetp)
@@ -3230,12 +3256,12 @@ PERL_CALLCONV void      Perl_sv_pos_b2u(pTHX_ SV* sv, I32* offsetp)
 #define PERL_ARGS_ASSERT_SV_PVN_FORCE  \
        assert(sv)
 
-PERL_CALLCONV char*    Perl_sv_pvutf8n_force(pTHX_ SV* sv, STRLEN* lp)
+PERL_CALLCONV char*    Perl_sv_pvutf8n_force(pTHX_ SV *const sv, STRLEN *const lp)
                        __attribute__nonnull__(pTHX_1);
 #define PERL_ARGS_ASSERT_SV_PVUTF8N_FORCE      \
        assert(sv)
 
-PERL_CALLCONV char*    Perl_sv_pvbyten_force(pTHX_ SV* sv, STRLEN* lp)
+PERL_CALLCONV char*    Perl_sv_pvbyten_force(pTHX_ SV *const sv, STRLEN *const lp)
                        __attribute__nonnull__(pTHX_1);
 #define PERL_ARGS_ASSERT_SV_PVBYTEN_FORCE      \
        assert(sv)
@@ -3255,7 +3281,7 @@ PERL_CALLCONV bool        Perl_sv_cat_decode(pTHX_ SV* dsv, SV *encoding, SV *ssv, int
 #define PERL_ARGS_ASSERT_SV_CAT_DECODE \
        assert(dsv); assert(encoding); assert(ssv); assert(offset); assert(tstr)
 
-PERL_CALLCONV const char*      Perl_sv_reftype(pTHX_ const SV* sv, int ob)
+PERL_CALLCONV const char*      Perl_sv_reftype(pTHX_ const SV *const sv, const int ob)
                        __attribute__warn_unused_result__
                        __attribute__nonnull__(pTHX_1);
 #define PERL_ARGS_ASSERT_SV_REFTYPE    \
@@ -3268,19 +3294,19 @@ PERL_CALLCONV void      Perl_sv_replace(pTHX_ SV *const sv, SV *const nsv)
        assert(sv); assert(nsv)
 
 PERL_CALLCONV void     Perl_sv_report_used(pTHX);
-PERL_CALLCONV void     Perl_sv_reset(pTHX_ const char* s, HV* stash)
+PERL_CALLCONV void     Perl_sv_reset(pTHX_ const char* s, HV *const stash)
                        __attribute__nonnull__(pTHX_1);
 #define PERL_ARGS_ASSERT_SV_RESET      \
        assert(s)
 
-PERL_CALLCONV void     Perl_sv_setpvf(pTHX_ SV* sv, const char* pat, ...)
+PERL_CALLCONV void     Perl_sv_setpvf(pTHX_ SV *const sv, const char *const pat, ...)
                        __attribute__format__(__printf__,pTHX_2,pTHX_3)
                        __attribute__nonnull__(pTHX_1)
                        __attribute__nonnull__(pTHX_2);
 #define PERL_ARGS_ASSERT_SV_SETPVF     \
        assert(sv); assert(pat)
 
-PERL_CALLCONV void     Perl_sv_vsetpvf(pTHX_ SV* sv, const char* pat, va_list* args)
+PERL_CALLCONV void     Perl_sv_vsetpvf(pTHX_ SV *const sv, const char *const pat, va_list *const args)
                        __attribute__nonnull__(pTHX_1)
                        __attribute__nonnull__(pTHX_2);
 #define PERL_ARGS_ASSERT_SV_VSETPVF    \
@@ -3291,7 +3317,7 @@ PERL_CALLCONV void        Perl_sv_setiv(pTHX_ SV *const sv, const IV num)
 #define PERL_ARGS_ASSERT_SV_SETIV      \
        assert(sv)
 
-PERL_CALLCONV void     Perl_sv_setpviv(pTHX_ SV* sv, IV num)
+PERL_CALLCONV void     Perl_sv_setpviv(pTHX_ SV *const sv, const IV num)
                        __attribute__nonnull__(pTHX_1);
 #define PERL_ARGS_ASSERT_SV_SETPVIV    \
        assert(sv)
@@ -3306,27 +3332,27 @@ PERL_CALLCONV void      Perl_sv_setnv(pTHX_ SV *const sv, const NV num)
 #define PERL_ARGS_ASSERT_SV_SETNV      \
        assert(sv)
 
-PERL_CALLCONV SV*      Perl_sv_setref_iv(pTHX_ SV* rv, const char* classname, IV iv)
+PERL_CALLCONV SV*      Perl_sv_setref_iv(pTHX_ SV *const rv, const char *const classname, const IV iv)
                        __attribute__nonnull__(pTHX_1);
 #define PERL_ARGS_ASSERT_SV_SETREF_IV  \
        assert(rv)
 
-PERL_CALLCONV SV*      Perl_sv_setref_uv(pTHX_ SV* rv, const char* classname, UV uv)
+PERL_CALLCONV SV*      Perl_sv_setref_uv(pTHX_ SV *const rv, const char *const classname, const UV uv)
                        __attribute__nonnull__(pTHX_1);
 #define PERL_ARGS_ASSERT_SV_SETREF_UV  \
        assert(rv)
 
-PERL_CALLCONV SV*      Perl_sv_setref_nv(pTHX_ SV* rv, const char* classname, NV nv)
+PERL_CALLCONV SV*      Perl_sv_setref_nv(pTHX_ SV *const rv, const char *const classname, const NV nv)
                        __attribute__nonnull__(pTHX_1);
 #define PERL_ARGS_ASSERT_SV_SETREF_NV  \
        assert(rv)
 
-PERL_CALLCONV SV*      Perl_sv_setref_pv(pTHX_ SV* rv, const char* classname, void* pv)
+PERL_CALLCONV SV*      Perl_sv_setref_pv(pTHX_ SV *const rv, const char *const classname, void *const pv)
                        __attribute__nonnull__(pTHX_1);
 #define PERL_ARGS_ASSERT_SV_SETREF_PV  \
        assert(rv)
 
-PERL_CALLCONV SV*      Perl_sv_setref_pvn(pTHX_ SV* rv, const char* classname, const char* pv, STRLEN n)
+PERL_CALLCONV SV*      Perl_sv_setref_pvn(pTHX_ SV *const rv, const char *const classname, const char *const pv, const STRLEN n)
                        __attribute__nonnull__(pTHX_1)
                        __attribute__nonnull__(pTHX_3);
 #define PERL_ARGS_ASSERT_SV_SETREF_PVN \
@@ -3352,7 +3378,7 @@ PERL_CALLCONV void        Perl_sv_setpvn(pTHX_ SV *const sv, const char *const ptr, con
 #define PERL_ARGS_ASSERT_SV_TAINT      \
        assert(sv)
 
-PERL_CALLCONV bool     Perl_sv_tainted(pTHX_ SV* sv)
+PERL_CALLCONV bool     Perl_sv_tainted(pTHX_ SV *const sv)
                        __attribute__warn_unused_result__
                        __attribute__nonnull__(pTHX_1);
 #define PERL_ARGS_ASSERT_SV_TAINTED    \
@@ -3368,12 +3394,12 @@ PERL_CALLCONV int       Perl_sv_unmagic(pTHX_ SV *const sv, const int type)
 #define PERL_ARGS_ASSERT_SV_UNREF      \
        assert(sv)
 
-PERL_CALLCONV void     Perl_sv_unref_flags(pTHX_ SV *ref, U32 flags)
+PERL_CALLCONV void     Perl_sv_unref_flags(pTHX_ SV *const ref, const U32 flags)
                        __attribute__nonnull__(pTHX_1);
 #define PERL_ARGS_ASSERT_SV_UNREF_FLAGS        \
        assert(ref)
 
-PERL_CALLCONV void     Perl_sv_untaint(pTHX_ SV* sv)
+PERL_CALLCONV void     Perl_sv_untaint(pTHX_ SV *const sv)
                        __attribute__nonnull__(pTHX_1);
 #define PERL_ARGS_ASSERT_SV_UNTAINT    \
        assert(sv)
@@ -3393,13 +3419,13 @@ PERL_CALLCONV void      Perl_sv_usepvn_flags(pTHX_ SV *const sv, char* ptr, const STR
 #define PERL_ARGS_ASSERT_SV_USEPVN_FLAGS       \
        assert(sv)
 
-PERL_CALLCONV void     Perl_sv_vcatpvfn(pTHX_ SV* sv, const char* pat, STRLEN patlen, va_list* args, SV** svargs, I32 svmax, bool *maybe_tainted)
+PERL_CALLCONV void     Perl_sv_vcatpvfn(pTHX_ SV *const sv, const char *const pat, const STRLEN patlen, va_list *const args, SV **const svargs, const I32 svmax, bool *const maybe_tainted)
                        __attribute__nonnull__(pTHX_1)
                        __attribute__nonnull__(pTHX_2);
 #define PERL_ARGS_ASSERT_SV_VCATPVFN   \
        assert(sv); assert(pat)
 
-PERL_CALLCONV void     Perl_sv_vsetpvfn(pTHX_ SV* sv, const char* pat, STRLEN patlen, va_list* args, SV** svargs, I32 svmax, bool *maybe_tainted)
+PERL_CALLCONV void     Perl_sv_vsetpvfn(pTHX_ SV *const sv, const char *const pat, const STRLEN patlen, va_list *const args, SV **const svargs, const I32 svmax, bool *const maybe_tainted)
                        __attribute__nonnull__(pTHX_1)
                        __attribute__nonnull__(pTHX_2);
 #define PERL_ARGS_ASSERT_SV_VSETPVFN   \
@@ -3654,7 +3680,7 @@ PERL_CALLCONV UV  Perl_get_hash_seed(pTHX)
                        __attribute__warn_unused_result__;
 
 PERL_CALLCONV void     Perl_report_evil_fh(pTHX_ const GV *gv, const IO *io, I32 op);
-PERL_CALLCONV void     Perl_report_uninit(pTHX_ SV* uninit_sv);
+PERL_CALLCONV void     Perl_report_uninit(pTHX_ const SV *uninit_sv);
 PERL_CALLCONV void     Perl_warn(pTHX_ const char* pat, ...)
                        __attribute__format__(__printf__,pTHX_1,pTHX_2)
                        __attribute__nonnull__(pTHX_1);
@@ -3704,13 +3730,15 @@ PERL_CALLCONV void      Perl_parser_free(pTHX_ const yy_parser *parser)
 #define PERL_ARGS_ASSERT_PARSER_FREE   \
        assert(parser)
 
-PERL_CALLCONV int      Perl_yywarn(pTHX_ const char *const s)
+#if defined(PERL_IN_TOKE_C) || defined(PERL_DECL_PROT)
+STATIC int     S_yywarn(pTHX_ const char *const s)
                        __attribute__nonnull__(pTHX_1);
 #define PERL_ARGS_ASSERT_YYWARN        \
        assert(s)
 
+#endif
 #if defined(MYMALLOC)
-PERL_CALLCONV void     Perl_dump_mstats(pTHX_ char* s)
+PERL_CALLCONV void     Perl_dump_mstats(pTHX_ const char* s)
                        __attribute__nonnull__(pTHX_1);
 #define PERL_ARGS_ASSERT_DUMP_MSTATS   \
        assert(s)
@@ -3745,14 +3773,14 @@ PERL_CALLCONV void      Perl_free_global_struct(pTHX_ struct perl_vars *plvarsp)
 #endif
 PERL_CALLCONV int      Perl_runops_standard(pTHX);
 PERL_CALLCONV int      Perl_runops_debug(pTHX);
-PERL_CALLCONV void     Perl_sv_catpvf_mg(pTHX_ SV *sv, const char* pat, ...)
+PERL_CALLCONV void     Perl_sv_catpvf_mg(pTHX_ SV *const sv, const char *const pat, ...)
                        __attribute__format__(__printf__,pTHX_2,pTHX_3)
                        __attribute__nonnull__(pTHX_1)
                        __attribute__nonnull__(pTHX_2);
 #define PERL_ARGS_ASSERT_SV_CATPVF_MG  \
        assert(sv); assert(pat)
 
-PERL_CALLCONV void     Perl_sv_vcatpvf_mg(pTHX_ SV* sv, const char* pat, va_list* args)
+PERL_CALLCONV void     Perl_sv_vcatpvf_mg(pTHX_ SV *const sv, const char *const pat, va_list *const args)
                        __attribute__nonnull__(pTHX_1)
                        __attribute__nonnull__(pTHX_2);
 #define PERL_ARGS_ASSERT_SV_VCATPVF_MG \
@@ -3774,14 +3802,14 @@ PERL_CALLCONV void      Perl_sv_catpv_mg(pTHX_ SV *const sv, const char *const ptr)
 #define PERL_ARGS_ASSERT_SV_CATSV_MG   \
        assert(dsv)
 
-PERL_CALLCONV void     Perl_sv_setpvf_mg(pTHX_ SV *sv, const char* pat, ...)
+PERL_CALLCONV void     Perl_sv_setpvf_mg(pTHX_ SV *const sv, const char *const pat, ...)
                        __attribute__format__(__printf__,pTHX_2,pTHX_3)
                        __attribute__nonnull__(pTHX_1)
                        __attribute__nonnull__(pTHX_2);
 #define PERL_ARGS_ASSERT_SV_SETPVF_MG  \
        assert(sv); assert(pat)
 
-PERL_CALLCONV void     Perl_sv_vsetpvf_mg(pTHX_ SV* sv, const char* pat, va_list* args)
+PERL_CALLCONV void     Perl_sv_vsetpvf_mg(pTHX_ SV *const sv, const char *const pat, va_list *const args)
                        __attribute__nonnull__(pTHX_1)
                        __attribute__nonnull__(pTHX_2);
 #define PERL_ARGS_ASSERT_SV_VSETPVF_MG \
@@ -3792,7 +3820,7 @@ PERL_CALLCONV void        Perl_sv_setiv_mg(pTHX_ SV *const sv, const IV i)
 #define PERL_ARGS_ASSERT_SV_SETIV_MG   \
        assert(sv)
 
-PERL_CALLCONV void     Perl_sv_setpviv_mg(pTHX_ SV *sv, IV iv)
+PERL_CALLCONV void     Perl_sv_setpviv_mg(pTHX_ SV *const sv, const IV iv)
                        __attribute__nonnull__(pTHX_1);
 #define PERL_ARGS_ASSERT_SV_SETPVIV_MG \
        assert(sv)
@@ -4044,40 +4072,40 @@ PERL_CALLCONV void      Perl_re_dup_guts(pTHX_ const REGEXP *sstr, REGEXP *dstr, CLON
 #define PERL_ARGS_ASSERT_RE_DUP_GUTS   \
        assert(sstr); assert(dstr); assert(param)
 
-PERL_CALLCONV PerlIO*  Perl_fp_dup(pTHX_ PerlIO* fp, char type, CLONE_PARAMS* param)
+PERL_CALLCONV PerlIO*  Perl_fp_dup(pTHX_ PerlIO *const fp, const char type, CLONE_PARAMS *const param)
                        __attribute__nonnull__(pTHX_3);
 #define PERL_ARGS_ASSERT_FP_DUP        \
        assert(param)
 
-PERL_CALLCONV DIR*     Perl_dirp_dup(pTHX_ DIR* dp)
+PERL_CALLCONV DIR*     Perl_dirp_dup(pTHX_ DIR *const dp)
                        __attribute__warn_unused_result__;
 
-PERL_CALLCONV GP*      Perl_gp_dup(pTHX_ GP* gp, CLONE_PARAMS* param)
+PERL_CALLCONV GP*      Perl_gp_dup(pTHX_ GP *const gp, CLONE_PARAMS *const param)
                        __attribute__warn_unused_result__
                        __attribute__nonnull__(pTHX_2);
 #define PERL_ARGS_ASSERT_GP_DUP        \
        assert(param)
 
-PERL_CALLCONV MAGIC*   Perl_mg_dup(pTHX_ MAGIC* mg, CLONE_PARAMS* param)
+PERL_CALLCONV MAGIC*   Perl_mg_dup(pTHX_ MAGIC *mg, CLONE_PARAMS *const param)
                        __attribute__warn_unused_result__
                        __attribute__nonnull__(pTHX_2);
 #define PERL_ARGS_ASSERT_MG_DUP        \
        assert(param)
 
-PERL_CALLCONV SV*      Perl_sv_dup(pTHX_ const SV* sstr, CLONE_PARAMS* param)
+PERL_CALLCONV SV*      Perl_sv_dup(pTHX_ const SV *const sstr, CLONE_PARAMS *const param)
                        __attribute__warn_unused_result__
                        __attribute__nonnull__(pTHX_2);
 #define PERL_ARGS_ASSERT_SV_DUP        \
        assert(param)
 
-PERL_CALLCONV void     Perl_rvpv_dup(pTHX_ SV* dstr, const SV *sstr, CLONE_PARAMS* param)
+PERL_CALLCONV void     Perl_rvpv_dup(pTHX_ SV *const dstr, const SV *const sstr, CLONE_PARAMS *const param)
                        __attribute__nonnull__(pTHX_1)
                        __attribute__nonnull__(pTHX_2)
                        __attribute__nonnull__(pTHX_3);
 #define PERL_ARGS_ASSERT_RVPV_DUP      \
        assert(dstr); assert(sstr); assert(param)
 
-PERL_CALLCONV yy_parser*       Perl_parser_dup(pTHX_ const yy_parser *proto, CLONE_PARAMS* param)
+PERL_CALLCONV yy_parser*       Perl_parser_dup(pTHX_ const yy_parser *const proto, CLONE_PARAMS *const param)
                        __attribute__nonnull__(pTHX_2);
 #define PERL_ARGS_ASSERT_PARSER_DUP    \
        assert(param)
@@ -4087,25 +4115,25 @@ PERL_CALLCONV PTR_TBL_t*        Perl_ptr_table_new(pTHX)
                        __attribute__malloc__
                        __attribute__warn_unused_result__;
 
-PERL_CALLCONV void*    Perl_ptr_table_fetch(pTHX_ PTR_TBL_t *tbl, const void *sv)
+PERL_CALLCONV void*    Perl_ptr_table_fetch(pTHX_ PTR_TBL_t *const tbl, const void *const sv)
                        __attribute__warn_unused_result__
                        __attribute__nonnull__(pTHX_1);
 #define PERL_ARGS_ASSERT_PTR_TABLE_FETCH       \
        assert(tbl)
 
-PERL_CALLCONV void     Perl_ptr_table_store(pTHX_ PTR_TBL_t *tbl, const void *oldsv, void *newsv)
+PERL_CALLCONV void     Perl_ptr_table_store(pTHX_ PTR_TBL_t *const tbl, const void *const oldsv, void *const newsv)
                        __attribute__nonnull__(pTHX_1)
                        __attribute__nonnull__(pTHX_3);
 #define PERL_ARGS_ASSERT_PTR_TABLE_STORE       \
        assert(tbl); assert(newsv)
 
-PERL_CALLCONV void     Perl_ptr_table_split(pTHX_ PTR_TBL_t *tbl)
+PERL_CALLCONV void     Perl_ptr_table_split(pTHX_ PTR_TBL_t *const tbl)
                        __attribute__nonnull__(pTHX_1);
 #define PERL_ARGS_ASSERT_PTR_TABLE_SPLIT       \
        assert(tbl)
 
-PERL_CALLCONV void     Perl_ptr_table_clear(pTHX_ PTR_TBL_t *tbl);
-PERL_CALLCONV void     Perl_ptr_table_free(pTHX_ PTR_TBL_t *tbl);
+PERL_CALLCONV void     Perl_ptr_table_clear(pTHX_ PTR_TBL_t *const tbl);
+PERL_CALLCONV void     Perl_ptr_table_free(pTHX_ PTR_TBL_t *const tbl);
 #if defined(USE_ITHREADS)
 #  if defined(HAVE_INTERP_INTERN)
 PERL_CALLCONV void     Perl_sys_intern_dup(pTHX_ struct interp_intern* src, struct interp_intern* dst)
@@ -4589,6 +4617,12 @@ STATIC OP*       S_scalarboolean(pTHX_ OP *o)
 STATIC OP*     S_newDEFSVOP(pTHX)
                        __attribute__warn_unused_result__;
 
+STATIC OP*     S_search_const(pTHX_ OP *o)
+                       __attribute__warn_unused_result__
+                       __attribute__nonnull__(pTHX_1);
+#define PERL_ARGS_ASSERT_SEARCH_CONST  \
+       assert(o)
+
 STATIC OP*     S_new_logop(pTHX_ I32 type, I32 flags, OP **firstp, OP **otherp)
                        __attribute__warn_unused_result__
                        __attribute__nonnull__(pTHX_3)
@@ -5011,55 +5045,55 @@ STATIC SV*      S_method_common(pTHX_ SV* meth, U32* hashp)
 #endif
 
 #if defined(PERL_IN_PP_SORT_C) || defined(PERL_DECL_PROT)
-STATIC I32     S_sv_ncmp(pTHX_ SV *a, SV *b)
+STATIC I32     S_sv_ncmp(pTHX_ SV *const a, SV *const b)
                        __attribute__nonnull__(pTHX_1)
                        __attribute__nonnull__(pTHX_2);
 #define PERL_ARGS_ASSERT_SV_NCMP       \
        assert(a); assert(b)
 
-STATIC I32     S_sv_i_ncmp(pTHX_ SV *a, SV *b)
+STATIC I32     S_sv_i_ncmp(pTHX_ SV *const a, SV *const b)
                        __attribute__nonnull__(pTHX_1)
                        __attribute__nonnull__(pTHX_2);
 #define PERL_ARGS_ASSERT_SV_I_NCMP     \
        assert(a); assert(b)
 
-STATIC I32     S_amagic_ncmp(pTHX_ SV *a, SV *b)
+STATIC I32     S_amagic_ncmp(pTHX_ SV *const a, SV *const b)
                        __attribute__nonnull__(pTHX_1)
                        __attribute__nonnull__(pTHX_2);
 #define PERL_ARGS_ASSERT_AMAGIC_NCMP   \
        assert(a); assert(b)
 
-STATIC I32     S_amagic_i_ncmp(pTHX_ SV *a, SV *b)
+STATIC I32     S_amagic_i_ncmp(pTHX_ SV *const a, SV *const b)
                        __attribute__nonnull__(pTHX_1)
                        __attribute__nonnull__(pTHX_2);
 #define PERL_ARGS_ASSERT_AMAGIC_I_NCMP \
        assert(a); assert(b)
 
-STATIC I32     S_amagic_cmp(pTHX_ SV *str1, SV *str2)
+STATIC I32     S_amagic_cmp(pTHX_ SV *const str1, SV *const str2)
                        __attribute__nonnull__(pTHX_1)
                        __attribute__nonnull__(pTHX_2);
 #define PERL_ARGS_ASSERT_AMAGIC_CMP    \
        assert(str1); assert(str2)
 
-STATIC I32     S_amagic_cmp_locale(pTHX_ SV *str1, SV *str2)
+STATIC I32     S_amagic_cmp_locale(pTHX_ SV *const str1, SV *const str2)
                        __attribute__nonnull__(pTHX_1)
                        __attribute__nonnull__(pTHX_2);
 #define PERL_ARGS_ASSERT_AMAGIC_CMP_LOCALE     \
        assert(str1); assert(str2)
 
-STATIC I32     S_sortcv(pTHX_ SV *a, SV *b)
+STATIC I32     S_sortcv(pTHX_ SV *const a, SV *const b)
                        __attribute__nonnull__(pTHX_1)
                        __attribute__nonnull__(pTHX_2);
 #define PERL_ARGS_ASSERT_SORTCV        \
        assert(a); assert(b)
 
-STATIC I32     S_sortcv_xsub(pTHX_ SV *a, SV *b)
+STATIC I32     S_sortcv_xsub(pTHX_ SV *const a, SV *const b)
                        __attribute__nonnull__(pTHX_1)
                        __attribute__nonnull__(pTHX_2);
 #define PERL_ARGS_ASSERT_SORTCV_XSUB   \
        assert(a); assert(b)
 
-STATIC I32     S_sortcv_stacked(pTHX_ SV *a, SV *b)
+STATIC I32     S_sortcv_stacked(pTHX_ SV *const a, SV *const b)
                        __attribute__nonnull__(pTHX_1)
                        __attribute__nonnull__(pTHX_2);
 #define PERL_ARGS_ASSERT_SORTCV_STACKED        \
@@ -5465,7 +5499,7 @@ STATIC SV*        S_pm_description(pTHX_ const PMOP *pm)
 #endif
 
 #if defined(PERL_IN_SCOPE_C) || defined(PERL_DECL_PROT)
-STATIC SV*     S_save_scalar_at(pTHX_ SV **sptr)
+STATIC SV*     S_save_scalar_at(pTHX_ SV **sptr, const U32 flags)
                        __attribute__nonnull__(pTHX_1);
 #define PERL_ARGS_ASSERT_SAVE_SCALAR_AT        \
        assert(sptr)
@@ -5498,7 +5532,7 @@ STATIC char *     S_uiv_2buf(char *const buf, const IV iv, UV uv, const int is_uv, c
 #define PERL_ARGS_ASSERT_UIV_2BUF      \
        assert(buf); assert(peob)
 
-STATIC void    S_sv_unglob(pTHX_ SV* sv)
+STATIC void    S_sv_unglob(pTHX_ SV *const sv)
                        __attribute__nonnull__(pTHX_1);
 #define PERL_ARGS_ASSERT_SV_UNGLOB     \
        assert(sv)
@@ -5519,7 +5553,7 @@ STATIC void       S_sv_del_backref(pTHX_ SV *const tsv, SV *const sv)
 #define PERL_ARGS_ASSERT_SV_DEL_BACKREF        \
        assert(tsv); assert(sv)
 
-STATIC SV *    S_varname(pTHX_ GV *gv, const char gvtype, PADOFFSET targ, SV *keyname, I32 aindex, int subscript_type)
+STATIC SV *    S_varname(pTHX_ const GV *const gv, const char gvtype, PADOFFSET targ, const SV *const keyname, I32 aindex, int subscript_type)
                        __attribute__warn_unused_result__;
 
 #  ifdef DEBUGGING
@@ -5544,7 +5578,7 @@ STATIC int        S_sv_2iuv_non_preserve(pTHX_ SV *const sv)
 
 #    endif
 #  endif
-STATIC I32     S_expect_number(pTHX_ char** pattern)
+STATIC I32     S_expect_number(pTHX_ char **const pattern)
                        __attribute__warn_unused_result__
                        __attribute__nonnull__(pTHX_1);
 #define PERL_ARGS_ASSERT_EXPECT_NUMBER \
@@ -5571,20 +5605,20 @@ STATIC STRLEN   S_sv_pos_u2b_cached(pTHX_ SV *const sv, MAGIC **const mgp, const U
 #define PERL_ARGS_ASSERT_SV_POS_U2B_CACHED     \
        assert(sv); assert(mgp); assert(start); assert(send)
 
-STATIC void    S_utf8_mg_pos_cache_update(pTHX_ SV *sv, MAGIC **mgp, STRLEN byte, STRLEN utf8, STRLEN blen)
+STATIC void    S_utf8_mg_pos_cache_update(pTHX_ SV *const sv, MAGIC **const mgp, const STRLEN byte, const STRLEN utf8, const STRLEN blen)
                        __attribute__nonnull__(pTHX_1)
                        __attribute__nonnull__(pTHX_2);
 #define PERL_ARGS_ASSERT_UTF8_MG_POS_CACHE_UPDATE      \
        assert(sv); assert(mgp)
 
-STATIC STRLEN  S_sv_pos_b2u_midway(pTHX_ const U8 *s, const U8 *const target, const U8 *end, STRLEN endu)
+STATIC STRLEN  S_sv_pos_b2u_midway(pTHX_ const U8 *const s, const U8 *const target, const U8 *end, STRLEN endu)
                        __attribute__nonnull__(pTHX_1)
                        __attribute__nonnull__(pTHX_2)
                        __attribute__nonnull__(pTHX_3);
 #define PERL_ARGS_ASSERT_SV_POS_B2U_MIDWAY     \
        assert(s); assert(target); assert(end)
 
-STATIC char *  S_F0convert(NV nv, char *endbuf, STRLEN *len)
+STATIC char *  S_F0convert(NV nv, char *const endbuf, STRLEN *const len)
                        __attribute__nonnull__(2)
                        __attribute__nonnull__(3);
 #define PERL_ARGS_ASSERT_F0CONVERT     \
@@ -5618,7 +5652,7 @@ STATIC void       S_glob_assign_ref(pTHX_ SV *const dstr, SV *const sstr)
 #define PERL_ARGS_ASSERT_GLOB_ASSIGN_REF       \
        assert(dstr); assert(sstr)
 
-STATIC PTR_TBL_ENT_t * S_ptr_table_find(PTR_TBL_t *tbl, const void *sv)
+STATIC PTR_TBL_ENT_t * S_ptr_table_find(PTR_TBL_t *const tbl, const void *const sv)
                        __attribute__warn_unused_result__
                        __attribute__nonnull__(1);
 #define PERL_ARGS_ASSERT_PTR_TABLE_FIND        \
@@ -5824,10 +5858,11 @@ STATIC void     S_printbuf(pTHX_ const char *const fmt, const char *const s)
 #endif
 
 #if defined(PERL_IN_UNIVERSAL_C) || defined(PERL_DECL_PROT)
-STATIC bool    S_isa_lookup(pTHX_ HV *stash, const char * const name, const HV * const name_stash)
+STATIC bool    S_isa_lookup(pTHX_ HV *stash, const char * const name)
+                       __attribute__nonnull__(pTHX_1)
                        __attribute__nonnull__(pTHX_2);
 #define PERL_ARGS_ASSERT_ISA_LOOKUP    \
-       assert(name)
+       assert(stash); assert(name)
 
 #endif
 
@@ -5853,6 +5888,15 @@ STATIC bool      S_vdie_common(pTHX_ const char *message, STRLEN msglen, I32 utf8, bo
 STATIC char *  S_write_no_mem(pTHX)
                        __attribute__noreturn__;
 
+#if defined(PERL_MEM_LOG) && defined(PERL_MEM_LOG_STDERR)
+STATIC void    S_mem_log_common(enum mem_log_type mlt, const UV n, const UV typesize, const char *type_name, const SV *sv, Malloc_t oldalloc, Malloc_t newalloc, const char *filename, const int linenumber, const char *funcname)
+                       __attribute__nonnull__(4)
+                       __attribute__nonnull__(8)
+                       __attribute__nonnull__(10);
+#define PERL_ARGS_ASSERT_MEM_LOG_COMMON        \
+       assert(type_name); assert(filename); assert(funcname)
+
+#endif
 #endif
 
 #if defined(PERL_IN_NUMERIC_C) || defined(PERL_DECL_PROT)
@@ -5905,7 +5949,7 @@ PERL_CALLCONV STRLEN      Perl_sv_utf8_upgrade_flags(pTHX_ SV *const sv, const I32 fl
 #define PERL_ARGS_ASSERT_SV_UTF8_UPGRADE_FLAGS \
        assert(sv)
 
-PERL_CALLCONV char*    Perl_sv_pvn_force_flags(pTHX_ SV* sv, STRLEN* lp, I32 flags)
+PERL_CALLCONV char*    Perl_sv_pvn_force_flags(pTHX_ SV *const sv, STRLEN *const lp, const I32 flags)
                        __attribute__nonnull__(pTHX_1);
 #define PERL_ARGS_ASSERT_SV_PVN_FORCE_FLAGS    \
        assert(sv)
@@ -6146,7 +6190,7 @@ PERL_CALLCONV I32*        Perl_hv_placeholders_p(pTHX_ HV *hv)
 #define PERL_ARGS_ASSERT_HV_PLACEHOLDERS_P     \
        assert(hv)
 
-PERL_CALLCONV I32      Perl_hv_placeholders_get(pTHX_ HV *hv)
+PERL_CALLCONV I32      Perl_hv_placeholders_get(pTHX_ const HV *hv)
                        __attribute__warn_unused_result__
                        __attribute__nonnull__(pTHX_1);
 #define PERL_ARGS_ASSERT_HV_PLACEHOLDERS_GET   \
@@ -6166,17 +6210,17 @@ PERL_CALLCONV SV*       Perl_magic_scalarpack(pTHX_ HV *hv, MAGIC *mg)
 
 
 #if defined(PERL_IN_SV_C) || defined(PERL_DECL_PROT)
-STATIC SV *    S_find_hash_subscript(pTHX_ HV *hv, SV *val)
+STATIC SV *    S_find_hash_subscript(pTHX_ const HV *const hv, const SV *const val)
                        __attribute__nonnull__(pTHX_2);
 #define PERL_ARGS_ASSERT_FIND_HASH_SUBSCRIPT   \
        assert(val)
 
-STATIC I32     S_find_array_subscript(pTHX_ AV *av, SV *val)
+STATIC I32     S_find_array_subscript(pTHX_ const AV *const av, const SV *const val)
                        __attribute__nonnull__(pTHX_2);
 #define PERL_ARGS_ASSERT_FIND_ARRAY_SUBSCRIPT  \
        assert(val)
 
-STATIC SV*     S_find_uninit_var(pTHX_ OP* obase, SV* uninit_sv, bool top);
+STATIC SV*     S_find_uninit_var(pTHX_ const OP *const obase, const SV *const uninit_sv, bool top);
 #endif
 
 #ifdef PERL_NEED_MY_HTOLE16
@@ -6269,11 +6313,11 @@ PERL_CALLCONV GV*       Perl_gv_fetchsv(pTHX_ SV *name, I32 flags, const svtype sv_typ
 #define PERL_ARGS_ASSERT_GV_FETCHSV    \
        assert(name)
 
-PERL_CALLCONV bool     Perl_is_gv_magical_sv(pTHX_ SV *name, U32 flags)
+PERL_CALLCONV bool     Perl_is_gv_magical_sv(pTHX_ SV *const name_sv, U32 flags)
                        __attribute__warn_unused_result__
                        __attribute__nonnull__(pTHX_1);
 #define PERL_ARGS_ASSERT_IS_GV_MAGICAL_SV      \
-       assert(name)
+       assert(name_sv)
 
 
 PERL_CALLCONV bool     Perl_stashpv_hvname_match(pTHX_ const COP *c, const HV *hv)
@@ -6527,12 +6571,12 @@ PERL_CALLCONV AV*       Perl_mro_get_linear_isa(pTHX_ HV* stash)
        assert(stash)
 
 #if defined(PERL_IN_MRO_C) || defined(PERL_DECL_PROT)
-STATIC AV*     S_mro_get_linear_isa_c3(pTHX_ HV* stash, I32 level)
+STATIC AV*     S_mro_get_linear_isa_c3(pTHX_ HV* stash, U32 level)
                        __attribute__nonnull__(pTHX_1);
 #define PERL_ARGS_ASSERT_MRO_GET_LINEAR_ISA_C3 \
        assert(stash)
 
-STATIC AV*     S_mro_get_linear_isa_dfs(pTHX_ HV* stash, I32 level)
+STATIC AV*     S_mro_get_linear_isa_dfs(pTHX_ HV* stash, U32 level)
                        __attribute__nonnull__(pTHX_1);
 #define PERL_ARGS_ASSERT_MRO_GET_LINEAR_ISA_DFS        \
        assert(stash)
@@ -6563,6 +6607,16 @@ PERL_CALLCONV void       Perl_sys_init3(int* argc, char*** argv, char*** env)
        assert(argc); assert(argv); assert(env)
 
 PERL_CALLCONV void     Perl_sys_term(void);
+PERL_CALLCONV const char *     Perl_fetch_cop_label(pTHX_ struct refcounted_he *const chain, STRLEN *len, U32 *flags);
+PERL_CALLCONV struct refcounted_he *   Perl_store_cop_label(pTHX_ struct refcounted_he *const chain, const char *label)
+                       __attribute__nonnull__(pTHX_2);
+#define PERL_ARGS_ASSERT_STORE_COP_LABEL       \
+       assert(label)
+
+PERL_CALLCONV HV *     Perl_get_isa_hash(pTHX_ HV *const stash)
+                       __attribute__nonnull__(pTHX_1);
+#define PERL_ARGS_ASSERT_GET_ISA_HASH  \
+       assert(stash)
 
 
 END_EXTERN_C