This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
fix bug #57042 - preserve $^R across TRIE matches
[perl5.git] / proto.h
diff --git a/proto.h b/proto.h
index 0d7d9a4..62ddce4 100644 (file)
--- a/proto.h
+++ b/proto.h
@@ -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);
@@ -429,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        \
@@ -450,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)
@@ -543,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) || defined(PERL_DECL_PROT)
+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)
@@ -616,7 +607,7 @@ PERL_CALLCONV bool  Perl_do_exec3(pTHX_ const char *incmd, int fd, int do_report)
 
 #endif
 PERL_CALLCONV void     Perl_do_execfree(pTHX);
-#ifdef PERL_IN_DOIO_C
+#if defined(PERL_IN_DOIO_C) || defined(PERL_DECL_PROT)
 STATIC void    S_exec_failed(pTHX_ const char *cmd, int fd, int do_report)
                        __attribute__nonnull__(pTHX_1);
 #define PERL_ARGS_ASSERT_EXEC_FAILED   \
@@ -803,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) || defined(PERL_DECL_PROT)
+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);
@@ -821,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) || defined(PERL_DECL_PROT)
+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)
@@ -1115,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) || defined(PERL_DECL_PROT)
+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     \
@@ -1147,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__;
 
@@ -1446,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) || defined(PERL_DECL_PROT)
+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   \
@@ -1791,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)
@@ -1848,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   \
@@ -1899,11 +1887,6 @@ PERL_CALLCONV const char*        Perl_moreswitches(pTHX_ const char* s)
 #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       \
@@ -2340,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)
@@ -2388,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) || defined(PERL_DECL_PROT)
+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)
@@ -2506,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);
@@ -2520,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) || defined(PERL_DECL_PROT)
+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) || defined(PERL_DECL_PROT)
+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       \
@@ -2580,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)
@@ -2710,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) || defined(PERL_DECL_PROT)
+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);
@@ -2802,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    \
@@ -2830,13 +2815,21 @@ 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_hints(pTHX);
+/* 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     \
@@ -2882,8 +2875,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)
 
@@ -2892,7 +2885,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   \
@@ -2920,10 +2913,18 @@ 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_ const I32 i, void *const ptr, const int type);
+PERL_CALLCONV void     Perl_save_pushptrptr(pTHX_ void *const ptr1, void *const ptr2, const int type);
+#if defined(PERL_IN_SCOPE_C) || defined(PERL_DECL_PROT)
+STATIC void    S_save_pushptri32ptr(pTHX_ void *const ptr1, const I32 i, void *const ptr2, const int type);
+#endif
 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) || defined(PERL_DECL_PROT)
+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    \
@@ -2961,13 +2962,6 @@ 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)
-                       __attribute__nonnull__(pTHX_1);
-#define PERL_ARGS_ASSERT_SETENV_GETIX  \
-       assert(nam)
-
-#endif
 PERL_CALLCONV void     Perl_setdefout(pTHX_ GV* gv);
 PERL_CALLCONV HEK*     Perl_share_hek(pTHX_ const char* str, I32 len, U32 hash)
                        __attribute__nonnull__(pTHX_1);
@@ -3009,7 +3003,7 @@ PERL_CALLCONV IO* Perl_sv_2io(pTHX_ SV *const sv)
 #define PERL_ARGS_ASSERT_SV_2IO        \
        assert(sv)
 
-#ifdef PERL_IN_SV_C
+#if defined(PERL_IN_SV_C) || defined(PERL_DECL_PROT)
 STATIC bool    S_glob_2number(pTHX_ GV* const gv)
                        __attribute__nonnull__(pTHX_1);
 #define PERL_ARGS_ASSERT_GLOB_2NUMBER  \
@@ -3083,11 +3077,13 @@ PERL_CALLCONV char*     Perl_sv_pvbyten(pTHX_ SV *sv, STRLEN *lp)
        assert(sv); assert(lp)
 
 PERL_CALLCONV I32      Perl_sv_true(pTHX_ SV *const sv);
-PERL_CALLCONV void     Perl_sv_add_arena(pTHX_ char *const ptr, const U32 size, const U32 flags)
+#if defined(PERL_IN_SV_C) || defined(PERL_DECL_PROT)
+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    \
@@ -3681,7 +3677,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);
@@ -3731,11 +3727,13 @@ 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_ const char* s)
                        __attribute__nonnull__(pTHX_1);
@@ -3971,6 +3969,11 @@ PERL_CALLCONV void       Perl_reginitcolors(pTHX);
 #define PERL_ARGS_ASSERT_SV_UTF8_UPGRADE       \
        assert(sv)
 
+/* PERL_CALLCONV STRLEN        sv_utf8_upgrade_nomg(pTHX_ SV *sv)
+                       __attribute__nonnull__(pTHX_1); */
+#define PERL_ARGS_ASSERT_SV_UTF8_UPGRADE_NOMG  \
+       assert(sv)
+
 PERL_CALLCONV bool     Perl_sv_utf8_downgrade(pTHX_ SV *const sv, const bool fail_ok)
                        __attribute__nonnull__(pTHX_1);
 #define PERL_ARGS_ASSERT_SV_UTF8_DOWNGRADE     \
@@ -4755,7 +4758,7 @@ STATIC void       S_find_beginning(pTHX_ SV* linestr_sv, PerlIO *rsfp)
        assert(linestr_sv); assert(rsfp)
 
 STATIC void    S_forbid_setid(pTHX_ const char flag, const bool suidscript);
-STATIC void    S_incpush(pTHX_ const char *dir, bool addsubdirs, bool addoldvers, bool usesep, bool canrelocate);
+STATIC void    S_incpush(pTHX_ const char *dir, bool addsubdirs, bool addoldvers, bool usesep, bool canrelocate, bool unshift);
 STATIC void    S_init_interp(pTHX);
 STATIC void    S_init_ids(pTHX);
 STATIC void    S_init_main_stash(pTHX);
@@ -5498,7 +5501,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)
@@ -5552,7 +5555,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
@@ -6028,7 +6031,7 @@ PERL_CALLCONV PerlIO *    Perl_PerlIO_stderr(pTHX)
 #endif /* PERLIO_LAYERS */
 
 PERL_CALLCONV void     Perl_deb_stack_all(pTHX);
-#ifdef PERL_IN_DEB_C
+#if defined(PERL_IN_DEB_C) || defined(PERL_DECL_PROT)
 STATIC void    S_deb_stack_n(pTHX_ SV** stack_base, I32 stack_min, I32 stack_max, I32 mark_min, I32 mark_max)
                        __attribute__nonnull__(pTHX_1);
 #define PERL_ARGS_ASSERT_DEB_STACK_N   \
@@ -6189,7 +6192,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   \
@@ -6209,17 +6212,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
@@ -6312,11 +6315,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)
@@ -6570,12 +6573,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)