This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Add check_utf8_print()
[perl5.git] / proto.h
diff --git a/proto.h b/proto.h
index 5e40a62..c4a273f 100644 (file)
--- a/proto.h
+++ b/proto.h
@@ -9,8 +9,8 @@
  *    License or the Artistic License, as specified in the README file.
  *
  * !!!!!!!   DO NOT EDIT THIS FILE   !!!!!!!
- * This file is built by embed.pl from data in embed.fnc, embed.pl,
- * pp.sym, intrpvar.h, and perlvars.h.
+ * This file is built by regen/embed.pl from data in embed.fnc,
+ * regen/embed.pl, regen/opcodes intrpvar.h, and perlvars.h.
  * Any changes made here will be lost!
  *
  * Edit those files and run 'make regen_headers' to effect changes.
@@ -23,6 +23,12 @@ PERL_CALLCONV int    Perl_Gv_AMupdate(pTHX_ HV* stash, bool destructing)
        assert(stash)
 
 PERL_CALLCONV const char *     Perl_PerlIO_context_layers(pTHX_ const char *mode);
+PERL_CALLCONV HV*      Perl__swash_inversion_hash(pTHX_ SV *swash)
+                       __attribute__warn_unused_result__
+                       __attribute__nonnull__(pTHX_1);
+#define PERL_ARGS_ASSERT__SWASH_INVERSION_HASH \
+       assert(swash)
+
 PERL_CALLCONV PADOFFSET        Perl_allocmy(pTHX_ const char *const name, const STRLEN len, const U32 flags)
                        __attribute__nonnull__(pTHX_1);
 #define PERL_ARGS_ASSERT_ALLOCMY       \
@@ -34,8 +40,11 @@ PERL_CALLCONV SV*    Perl_amagic_call(pTHX_ SV* left, SV* right, int method, int di
 #define PERL_ARGS_ASSERT_AMAGIC_CALL   \
        assert(left); assert(right)
 
-PERL_CALLCONV OP*      Perl_append_elem(pTHX_ I32 optype, OP* first, OP* last);
-PERL_CALLCONV OP*      Perl_append_list(pTHX_ I32 optype, LISTOP* first, LISTOP* last);
+PERL_CALLCONV SV *     Perl_amagic_deref_call(pTHX_ SV *ref, int method)
+                       __attribute__nonnull__(pTHX_1);
+#define PERL_ARGS_ASSERT_AMAGIC_DEREF_CALL     \
+       assert(ref)
+
 PERL_CALLCONV I32      Perl_apply(pTHX_ I32 type, SV** mark, SV** sp)
                        __attribute__nonnull__(pTHX_2)
                        __attribute__nonnull__(pTHX_3);
@@ -178,6 +187,12 @@ PERL_CALLCONV void Perl_blockhook_register(pTHX_ BHK *hk)
 PERL_CALLCONV void     Perl_boot_core_PerlIO(pTHX);
 PERL_CALLCONV void     Perl_boot_core_UNIVERSAL(pTHX);
 PERL_CALLCONV void     Perl_boot_core_mro(pTHX);
+PERL_CALLCONV int      Perl_bytes_cmp_utf8(pTHX_ const U8 *b, STRLEN blen, const U8 *u, STRLEN ulen)
+                       __attribute__nonnull__(pTHX_1)
+                       __attribute__nonnull__(pTHX_3);
+#define PERL_ARGS_ASSERT_BYTES_CMP_UTF8        \
+       assert(b); assert(u)
+
 PERL_CALLCONV U8*      Perl_bytes_from_utf8(pTHX_ const U8 *s, STRLEN *len, bool *is_utf8)
                        __attribute__nonnull__(pTHX_1)
                        __attribute__nonnull__(pTHX_2);
@@ -240,6 +255,11 @@ PERL_CALLCONV U32  Perl_cast_ulong(pTHX_ NV f)
 PERL_CALLCONV UV       Perl_cast_uv(pTHX_ NV f)
                        __attribute__warn_unused_result__;
 
+PERL_CALLCONV bool     Perl_check_utf8_print(pTHX_ const U8 *s, const STRLEN len)
+                       __attribute__nonnull__(pTHX_1);
+#define PERL_ARGS_ASSERT_CHECK_UTF8_PRINT      \
+       assert(s)
+
 PERL_CALLCONV OP *     Perl_ck_anoncode(pTHX_ OP *o)
                        __attribute__warn_unused_result__
                        __attribute__nonnull__(pTHX_1);
@@ -288,6 +308,25 @@ PERL_CALLCONV OP * Perl_ck_each(pTHX_ OP *o)
 #define PERL_ARGS_ASSERT_CK_EACH       \
        assert(o)
 
+PERL_CALLCONV OP*      Perl_ck_entersub_args_list(pTHX_ OP *entersubop)
+                       __attribute__nonnull__(pTHX_1);
+#define PERL_ARGS_ASSERT_CK_ENTERSUB_ARGS_LIST \
+       assert(entersubop)
+
+PERL_CALLCONV OP*      Perl_ck_entersub_args_proto(pTHX_ OP *entersubop, GV *namegv, SV *protosv)
+                       __attribute__nonnull__(pTHX_1)
+                       __attribute__nonnull__(pTHX_2)
+                       __attribute__nonnull__(pTHX_3);
+#define PERL_ARGS_ASSERT_CK_ENTERSUB_ARGS_PROTO        \
+       assert(entersubop); assert(namegv); assert(protosv)
+
+PERL_CALLCONV OP*      Perl_ck_entersub_args_proto_or_list(pTHX_ OP *entersubop, GV *namegv, SV *protosv)
+                       __attribute__nonnull__(pTHX_1)
+                       __attribute__nonnull__(pTHX_2)
+                       __attribute__nonnull__(pTHX_3);
+#define PERL_ARGS_ASSERT_CK_ENTERSUB_ARGS_PROTO_OR_LIST        \
+       assert(entersubop); assert(namegv); assert(protosv)
+
 PERL_CALLCONV OP *     Perl_ck_eof(pTHX_ OP *o)
                        __attribute__warn_unused_result__
                        __attribute__nonnull__(pTHX_1);
@@ -390,6 +429,12 @@ PERL_CALLCONV OP * Perl_ck_open(pTHX_ OP *o)
 #define PERL_ARGS_ASSERT_CK_OPEN       \
        assert(o)
 
+PERL_CALLCONV OP *     Perl_ck_push(pTHX_ OP *o)
+                       __attribute__warn_unused_result__
+                       __attribute__nonnull__(pTHX_1);
+#define PERL_ARGS_ASSERT_CK_PUSH       \
+       assert(o)
+
 PERL_CALLCONV OP *     Perl_ck_readline(pTHX_ OP *o)
                        __attribute__warn_unused_result__
                        __attribute__nonnull__(pTHX_1);
@@ -515,29 +560,6 @@ PERL_CALLCONV bool Perl_ckwarn_d(pTHX_ U32 w);
 PERL_CALLCONV OP*      Perl_convert(pTHX_ I32 optype, I32 flags, OP* o)
                        __attribute__warn_unused_result__;
 
-PERL_CALLCONV HV*      Perl_cop_hints_2hv(pTHX_ const COP *cop)
-                       __attribute__nonnull__(pTHX_1);
-#define PERL_ARGS_ASSERT_COP_HINTS_2HV \
-       assert(cop)
-
-/* PERL_CALLCONV SV*   cop_hints_fetchpv(pTHX_ const COP *cop, const char *const key, int flags, U32 hash)
-                       __attribute__nonnull__(pTHX_1)
-                       __attribute__nonnull__(pTHX_2); */
-
-PERL_CALLCONV SV*      Perl_cop_hints_fetchpvn(pTHX_ const COP *cop, const char *key, STRLEN klen, int flags, U32 hash)
-                       __attribute__nonnull__(pTHX_1)
-                       __attribute__nonnull__(pTHX_2);
-#define PERL_ARGS_ASSERT_COP_HINTS_FETCHPVN    \
-       assert(cop); assert(key)
-
-/* PERL_CALLCONV SV*   cop_hints_fetchpvs(pTHX_ const COP *cop, const char *const key)
-                       __attribute__nonnull__(pTHX_1)
-                       __attribute__nonnull__(pTHX_2); */
-
-/* PERL_CALLCONV SV*   cop_hints_fetchsv(pTHX_ const COP *cop, SV *keysv, U32 hash)
-                       __attribute__nonnull__(pTHX_1)
-                       __attribute__nonnull__(pTHX_2); */
-
 PERL_CALLCONV PERL_CONTEXT*    Perl_create_eval_scope(pTHX_ U32 flags);
 PERL_CALLCONV void     Perl_croak(pTHX_ const char* pat, ...)
                        __attribute__noreturn__
@@ -571,6 +593,18 @@ PERL_CALLCONV const char * Perl_custom_op_name(pTHX_ const OP *o)
 #define PERL_ARGS_ASSERT_CUSTOM_OP_NAME        \
        assert(o)
 
+PERL_CALLCONV void     Perl_custom_op_register(pTHX_ Perl_ppaddr_t ppaddr, const XOP *xop)
+                       __attribute__nonnull__(pTHX_1)
+                       __attribute__nonnull__(pTHX_2);
+#define PERL_ARGS_ASSERT_CUSTOM_OP_REGISTER    \
+       assert(ppaddr); assert(xop)
+
+PERL_CALLCONV const XOP *      Perl_custom_op_xop(pTHX_ const OP *o)
+                       __attribute__pure__
+                       __attribute__nonnull__(pTHX_1);
+#define PERL_ARGS_ASSERT_CUSTOM_OP_XOP \
+       assert(o)
+
 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        \
@@ -584,6 +618,20 @@ PERL_CALLCONV CV*  Perl_cv_clone(pTHX_ CV* proto)
 PERL_CALLCONV SV*      Perl_cv_const_sv(pTHX_ const CV *const cv)
                        __attribute__warn_unused_result__;
 
+PERL_CALLCONV void     Perl_cv_get_call_checker(pTHX_ CV *cv, Perl_call_checker *ckfun_p, SV **ckobj_p)
+                       __attribute__nonnull__(pTHX_1)
+                       __attribute__nonnull__(pTHX_2)
+                       __attribute__nonnull__(pTHX_3);
+#define PERL_ARGS_ASSERT_CV_GET_CALL_CHECKER   \
+       assert(cv); assert(ckfun_p); assert(ckobj_p)
+
+PERL_CALLCONV void     Perl_cv_set_call_checker(pTHX_ CV *cv, Perl_call_checker ckfun, SV *ckobj)
+                       __attribute__nonnull__(pTHX_1)
+                       __attribute__nonnull__(pTHX_2)
+                       __attribute__nonnull__(pTHX_3);
+#define PERL_ARGS_ASSERT_CV_SET_CALL_CHECKER   \
+       assert(cv); assert(ckfun); assert(ckobj)
+
 PERL_CALLCONV void     Perl_cv_undef(pTHX_ CV* cv)
                        __attribute__nonnull__(pTHX_1);
 #define PERL_ARGS_ASSERT_CV_UNDEF      \
@@ -594,6 +642,11 @@ PERL_CALLCONV void Perl_cvgv_set(pTHX_ CV* cv, GV* gv)
 #define PERL_ARGS_ASSERT_CVGV_SET      \
        assert(cv)
 
+PERL_CALLCONV void     Perl_cvstash_set(pTHX_ CV* cv, HV* stash)
+                       __attribute__nonnull__(pTHX_1);
+#define PERL_ARGS_ASSERT_CVSTASH_SET   \
+       assert(cv)
+
 PERL_CALLCONV void     Perl_cx_dump(pTHX_ PERL_CONTEXT* cx)
                        __attribute__nonnull__(pTHX_1);
 #define PERL_ARGS_ASSERT_CX_DUMP       \
@@ -659,17 +712,6 @@ PERL_CALLCONV int  Perl_do_binmode(pTHX_ PerlIO *fp, int iotype, int mode)
 #define PERL_ARGS_ASSERT_DO_BINMODE    \
        assert(fp)
 
-PERL_CALLCONV I32      Perl_do_chomp(pTHX_ SV* sv)
-                       __attribute__nonnull__(pTHX_1);
-#define PERL_ARGS_ASSERT_DO_CHOMP      \
-       assert(sv)
-
-PERL_CALLCONV void     Perl_do_chop(pTHX_ SV *astr, SV *sv)
-                       __attribute__nonnull__(pTHX_1)
-                       __attribute__nonnull__(pTHX_2);
-#define PERL_ARGS_ASSERT_DO_CHOP       \
-       assert(astr); assert(sv)
-
 PERL_CALLCONV bool     Perl_do_close(pTHX_ GV* gv, bool not_implicit);
 PERL_CALLCONV void     Perl_do_dump_pad(pTHX_ I32 level, PerlIO *file, PADLIST *padlist, int full)
                        __attribute__nonnull__(pTHX_2);
@@ -708,7 +750,6 @@ PERL_CALLCONV void  Perl_do_join(pTHX_ SV *sv, SV *delim, SV **mark, SV **sp)
 #define PERL_ARGS_ASSERT_DO_JOIN       \
        assert(sv); assert(delim); assert(mark); assert(sp)
 
-PERL_CALLCONV OP*      Perl_do_kv(pTHX);
 PERL_CALLCONV void     Perl_do_magic_dump(pTHX_ I32 level, PerlIO *file, const MAGIC *mg, I32 nest, I32 maxnest, bool dumpops, STRLEN pvlim)
                        __attribute__nonnull__(pTHX_2)
                        __attribute__nonnull__(pTHX_3);
@@ -920,6 +961,13 @@ PERL_CALLCONV I32  Perl_foldEQ(const char* a, const char* b, I32 len)
 #define PERL_ARGS_ASSERT_FOLDEQ        \
        assert(a); assert(b)
 
+PERL_CALLCONV I32      Perl_foldEQ_latin1(const char* a, const char* b, I32 len)
+                       __attribute__pure__
+                       __attribute__nonnull__(1)
+                       __attribute__nonnull__(2);
+#define PERL_ARGS_ASSERT_FOLDEQ_LATIN1 \
+       assert(a); assert(b)
+
 PERL_CALLCONV I32      Perl_foldEQ_locale(const char* a, const char* b, I32 len)
                        __attribute__pure__
                        __attribute__nonnull__(1)
@@ -1249,6 +1297,18 @@ PERL_CALLCONV void       Perl_hv_eiter_set(pTHX_ HV *hv, HE *eiter)
 #define PERL_ARGS_ASSERT_HV_EITER_SET  \
        assert(hv)
 
+PERL_CALLCONV void     Perl_hv_ename_add(pTHX_ HV *hv, const char *name, U32 len, U32 flags)
+                       __attribute__nonnull__(pTHX_1)
+                       __attribute__nonnull__(pTHX_2);
+#define PERL_ARGS_ASSERT_HV_ENAME_ADD  \
+       assert(hv); assert(name)
+
+PERL_CALLCONV void     Perl_hv_ename_delete(pTHX_ HV *hv, const char *name, U32 len, U32 flags)
+                       __attribute__nonnull__(pTHX_1)
+                       __attribute__nonnull__(pTHX_2);
+#define PERL_ARGS_ASSERT_HV_ENAME_DELETE       \
+       assert(hv); assert(name)
+
 /* PERL_CALLCONV bool  Perl_hv_exists(pTHX_ HV *hv, const char *key, I32 klen)
                        __attribute__warn_unused_result__
                        __attribute__nonnull__(pTHX_2); */
@@ -1378,7 +1438,8 @@ PERL_CALLCONV SV* Perl_hv_scalar(pTHX_ HV *hv)
 /* 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); */
-PERL_CALLCONV void     Perl_hv_undef(pTHX_ HV *hv);
+/* PERL_CALLCONV void  hv_undef(pTHX_ HV *hv); */
+PERL_CALLCONV void     Perl_hv_undef_flags(pTHX_ HV *hv, U32 flags);
 /* PERL_CALLCONV I32   ibcmp(pTHX_ const char* a, const char* b, I32 len)
                        __attribute__nonnull__(pTHX_1)
                        __attribute__nonnull__(pTHX_2); */
@@ -1753,7 +1814,6 @@ PERL_CALLCONV void        Perl_lex_discard_to(pTHX_ char* ptr)
 #define PERL_ARGS_ASSERT_LEX_DISCARD_TO        \
        assert(ptr)
 
-PERL_CALLCONV void     Perl_lex_end(pTHX);
 PERL_CALLCONV char*    Perl_lex_grow_linestr(pTHX_ STRLEN len);
 PERL_CALLCONV bool     Perl_lex_next_chunk(pTHX_ U32 flags);
 PERL_CALLCONV I32      Perl_lex_peek_unichar(pTHX_ U32 flags);
@@ -1764,7 +1824,7 @@ PERL_CALLCONV void        Perl_lex_read_to(pTHX_ char* ptr)
        assert(ptr)
 
 PERL_CALLCONV I32      Perl_lex_read_unichar(pTHX_ U32 flags);
-PERL_CALLCONV void     Perl_lex_start(pTHX_ SV* line, PerlIO *rsfp, bool new_filter);
+PERL_CALLCONV void     Perl_lex_start(pTHX_ SV* line, PerlIO *rsfp, U32 flags);
 PERL_CALLCONV void     Perl_lex_stuff_pv(pTHX_ const char* pv, U32 flags)
                        __attribute__nonnull__(pTHX_1);
 #define PERL_ARGS_ASSERT_LEX_STUFF_PV  \
@@ -2141,11 +2201,19 @@ PERL_CALLCONV int       Perl_mg_copy(pTHX_ SV *sv, SV *nsv, const char *key, I32 klen)
 PERL_CALLCONV MAGIC*   Perl_mg_find(pTHX_ const SV* sv, int type)
                        __attribute__warn_unused_result__;
 
+PERL_CALLCONV MAGIC*   Perl_mg_findext(pTHX_ const SV* sv, int type, const MGVTBL *vtbl)
+                       __attribute__warn_unused_result__;
+
 PERL_CALLCONV int      Perl_mg_free(pTHX_ SV* sv)
                        __attribute__nonnull__(pTHX_1);
 #define PERL_ARGS_ASSERT_MG_FREE       \
        assert(sv)
 
+PERL_CALLCONV void     Perl_mg_free_type(pTHX_ SV* sv, int how)
+                       __attribute__nonnull__(pTHX_1);
+#define PERL_ARGS_ASSERT_MG_FREE_TYPE  \
+       assert(sv)
+
 PERL_CALLCONV int      Perl_mg_get(pTHX_ SV* sv)
                        __attribute__nonnull__(pTHX_1);
 #define PERL_ARGS_ASSERT_MG_GET        \
@@ -2221,6 +2289,11 @@ PERL_CALLCONV void       Perl_mro_method_changed_in(pTHX_ HV* stash)
 #define PERL_ARGS_ASSERT_MRO_METHOD_CHANGED_IN \
        assert(stash)
 
+PERL_CALLCONV void     Perl_mro_package_moved(pTHX_ HV * const stash, HV * const oldstash, const GV * const gv, U32 flags)
+                       __attribute__nonnull__(pTHX_3);
+#define PERL_ARGS_ASSERT_MRO_PACKAGE_MOVED     \
+       assert(gv)
+
 PERL_CALLCONV void     Perl_mro_register(pTHX_ const struct mro_alg *mro)
                        __attribute__nonnull__(pTHX_1);
 #define PERL_ARGS_ASSERT_MRO_REGISTER  \
@@ -2354,10 +2427,10 @@ PERL_CALLCONV OP*       Perl_newCVREF(pTHX_ I32 flags, OP* o)
                        __attribute__malloc__
                        __attribute__warn_unused_result__;
 
-PERL_CALLCONV OP*      Perl_newFOROP(pTHX_ I32 flags, char* label, line_t forline, OP* sv, OP* expr, OP* block, OP* cont)
+PERL_CALLCONV OP*      Perl_newFOROP(pTHX_ I32 flags, OP* sv, OP* expr, OP* block, OP* cont)
                        __attribute__malloc__
                        __attribute__warn_unused_result__
-                       __attribute__nonnull__(pTHX_5);
+                       __attribute__nonnull__(pTHX_3);
 #define PERL_ARGS_ASSERT_NEWFOROP      \
        assert(expr)
 
@@ -2484,7 +2557,7 @@ PERL_CALLCONV OP* Perl_newSTATEOP(pTHX_ I32 flags, char* label, OP* o)
                        __attribute__malloc__
                        __attribute__warn_unused_result__;
 
-PERL_CALLCONV CV*      Perl_newSUB(pTHX_ I32 floor, OP* o, OP* proto, OP* block);
+/* PERL_CALLCONV CV*   Perl_newSUB(pTHX_ I32 floor, OP* o, OP* proto, OP* block); */
 PERL_CALLCONV SV*      Perl_newSV(pTHX_ const STRLEN len)
                        __attribute__malloc__
                        __attribute__warn_unused_result__;
@@ -2571,7 +2644,7 @@ PERL_CALLCONV OP* Perl_newWHENOP(pTHX_ OP* cond, OP* block)
 #define PERL_ARGS_ASSERT_NEWWHENOP     \
        assert(block)
 
-PERL_CALLCONV OP*      Perl_newWHILEOP(pTHX_ I32 flags, I32 debuggable, LOOP* loop, I32 whileline, OP* expr, OP* block, OP* cont, I32 has_my)
+PERL_CALLCONV OP*      Perl_newWHILEOP(pTHX_ I32 flags, I32 debuggable, LOOP* loop, OP* expr, OP* block, OP* cont, I32 has_my)
                        __attribute__malloc__
                        __attribute__warn_unused_result__;
 
@@ -2637,6 +2710,8 @@ PERL_CALLCONV OP* Perl_oopsHV(pTHX_ OP* o)
 #define PERL_ARGS_ASSERT_OOPSHV        \
        assert(o)
 
+PERL_CALLCONV OP*      Perl_op_append_elem(pTHX_ I32 optype, OP* first, OP* last);
+PERL_CALLCONV OP*      Perl_op_append_list(pTHX_ I32 optype, OP* first, OP* last);
 PERL_CALLCONV void     Perl_op_clear(pTHX_ OP* o)
                        __attribute__nonnull__(pTHX_1);
 #define PERL_ARGS_ASSERT_OP_CLEAR      \
@@ -2645,19 +2720,32 @@ PERL_CALLCONV void      Perl_op_clear(pTHX_ OP* o)
 PERL_CALLCONV SV*      Perl_op_const_sv(pTHX_ const OP* o, CV* cv)
                        __attribute__warn_unused_result__;
 
+PERL_CALLCONV OP*      Perl_op_contextualize(pTHX_ OP* o, I32 context)
+                       __attribute__nonnull__(pTHX_1);
+#define PERL_ARGS_ASSERT_OP_CONTEXTUALIZE      \
+       assert(o)
+
 PERL_CALLCONV void     Perl_op_dump(pTHX_ const OP *o)
                        __attribute__nonnull__(pTHX_1);
 #define PERL_ARGS_ASSERT_OP_DUMP       \
        assert(o)
 
 PERL_CALLCONV void     Perl_op_free(pTHX_ OP* arg);
+PERL_CALLCONV OP*      Perl_op_linklist(pTHX_ OP *o)
+                       __attribute__nonnull__(pTHX_1);
+#define PERL_ARGS_ASSERT_OP_LINKLIST   \
+       assert(o)
+
+PERL_CALLCONV OP*      Perl_op_lvalue(pTHX_ OP* o, I32 type);
 PERL_CALLCONV void     Perl_op_null(pTHX_ OP* o)
                        __attribute__nonnull__(pTHX_1);
 #define PERL_ARGS_ASSERT_OP_NULL       \
        assert(o)
 
+PERL_CALLCONV OP*      Perl_op_prepend_elem(pTHX_ I32 optype, OP* first, OP* last);
 PERL_CALLCONV void     Perl_op_refcnt_lock(pTHX);
 PERL_CALLCONV void     Perl_op_refcnt_unlock(pTHX);
+PERL_CALLCONV OP*      Perl_op_scope(pTHX_ OP* o);
 PERL_CALLCONV void     Perl_pack_cat(pTHX_ SV *cat, const char *pat, const char *patend, SV **beglist, SV **endlist, SV ***next_in_list, U32 flags)
                        __attribute__nonnull__(pTHX_1)
                        __attribute__nonnull__(pTHX_2)
@@ -2723,13 +2811,15 @@ PERL_CALLCONV void      Perl_pad_push(pTHX_ PADLIST *padlist, int depth)
 
 PERL_CALLCONV void     Perl_pad_swipe(pTHX_ PADOFFSET po, bool refadjust);
 PERL_CALLCONV void     Perl_pad_tidy(pTHX_ padtidy_type type);
-PERL_CALLCONV void     Perl_pad_undef(pTHX_ CV* cv)
-                       __attribute__nonnull__(pTHX_1);
-#define PERL_ARGS_ASSERT_PAD_UNDEF     \
-       assert(cv)
-
+PERL_CALLCONV OP*      Perl_parse_arithexpr(pTHX_ U32 flags);
+PERL_CALLCONV OP*      Perl_parse_barestmt(pTHX_ U32 flags);
+PERL_CALLCONV OP*      Perl_parse_block(pTHX_ U32 flags);
+PERL_CALLCONV OP*      Perl_parse_fullexpr(pTHX_ U32 flags);
 PERL_CALLCONV OP*      Perl_parse_fullstmt(pTHX_ U32 flags);
+PERL_CALLCONV SV*      Perl_parse_label(pTHX_ U32 flags);
+PERL_CALLCONV OP*      Perl_parse_listexpr(pTHX_ U32 flags);
 PERL_CALLCONV OP*      Perl_parse_stmtseq(pTHX_ U32 flags);
+PERL_CALLCONV OP*      Perl_parse_termexpr(pTHX_ U32 flags);
 PERL_CALLCONV U32      Perl_parse_unicode_opts(pTHX_ const char **popt)
                        __attribute__nonnull__(pTHX_1);
 #define PERL_ARGS_ASSERT_PARSE_UNICODE_OPTS    \
@@ -2775,367 +2865,11 @@ PERL_CALLCONV OP*      Perl_pmruntime(pTHX_ OP *o, OP *expr, bool isreg)
        assert(o); assert(expr)
 
 PERL_CALLCONV void     Perl_pop_scope(pTHX);
-PERL_CALLCONV OP *     Perl_pp_aassign(pTHX);
-PERL_CALLCONV OP *     Perl_pp_abs(pTHX);
-PERL_CALLCONV OP *     Perl_pp_accept(pTHX);
-PERL_CALLCONV OP *     Perl_pp_add(pTHX);
-PERL_CALLCONV OP *     Perl_pp_aeach(pTHX);
-PERL_CALLCONV OP *     Perl_pp_aelem(pTHX);
-PERL_CALLCONV OP *     Perl_pp_aelemfast(pTHX);
-PERL_CALLCONV OP *     Perl_pp_akeys(pTHX);
-PERL_CALLCONV OP *     Perl_pp_alarm(pTHX);
-PERL_CALLCONV OP *     Perl_pp_and(pTHX);
-PERL_CALLCONV OP *     Perl_pp_andassign(pTHX);
-PERL_CALLCONV OP *     Perl_pp_anoncode(pTHX);
-PERL_CALLCONV OP *     Perl_pp_anonhash(pTHX);
-PERL_CALLCONV OP *     Perl_pp_anonlist(pTHX);
-PERL_CALLCONV OP *     Perl_pp_aslice(pTHX);
-PERL_CALLCONV OP *     Perl_pp_atan2(pTHX);
-PERL_CALLCONV OP *     Perl_pp_av2arylen(pTHX);
-PERL_CALLCONV OP *     Perl_pp_avalues(pTHX);
-PERL_CALLCONV OP *     Perl_pp_backtick(pTHX);
-PERL_CALLCONV OP *     Perl_pp_bind(pTHX);
-PERL_CALLCONV OP *     Perl_pp_binmode(pTHX);
-PERL_CALLCONV OP *     Perl_pp_bit_and(pTHX);
-PERL_CALLCONV OP *     Perl_pp_bit_or(pTHX);
-PERL_CALLCONV OP *     Perl_pp_bit_xor(pTHX);
-PERL_CALLCONV OP *     Perl_pp_bless(pTHX);
-PERL_CALLCONV OP *     Perl_pp_boolkeys(pTHX);
-PERL_CALLCONV OP *     Perl_pp_break(pTHX);
-PERL_CALLCONV OP *     Perl_pp_caller(pTHX);
-PERL_CALLCONV OP *     Perl_pp_chdir(pTHX);
-PERL_CALLCONV OP *     Perl_pp_chmod(pTHX);
-PERL_CALLCONV OP *     Perl_pp_chomp(pTHX);
-PERL_CALLCONV OP *     Perl_pp_chop(pTHX);
-PERL_CALLCONV OP *     Perl_pp_chown(pTHX);
-PERL_CALLCONV OP *     Perl_pp_chr(pTHX);
-PERL_CALLCONV OP *     Perl_pp_chroot(pTHX);
-PERL_CALLCONV OP *     Perl_pp_close(pTHX);
-PERL_CALLCONV OP *     Perl_pp_closedir(pTHX);
-PERL_CALLCONV OP *     Perl_pp_complement(pTHX);
-PERL_CALLCONV OP *     Perl_pp_concat(pTHX);
-PERL_CALLCONV OP *     Perl_pp_cond_expr(pTHX);
-PERL_CALLCONV OP *     Perl_pp_connect(pTHX);
-PERL_CALLCONV OP *     Perl_pp_const(pTHX);
-PERL_CALLCONV OP *     Perl_pp_continue(pTHX);
-PERL_CALLCONV OP *     Perl_pp_cos(pTHX);
-PERL_CALLCONV OP *     Perl_pp_crypt(pTHX);
-PERL_CALLCONV OP *     Perl_pp_dbmclose(pTHX);
-PERL_CALLCONV OP *     Perl_pp_dbmopen(pTHX);
-PERL_CALLCONV OP *     Perl_pp_dbstate(pTHX);
-PERL_CALLCONV OP *     Perl_pp_defined(pTHX);
-PERL_CALLCONV OP *     Perl_pp_delete(pTHX);
-PERL_CALLCONV OP *     Perl_pp_die(pTHX);
-PERL_CALLCONV OP *     Perl_pp_divide(pTHX);
-PERL_CALLCONV OP *     Perl_pp_dofile(pTHX);
-PERL_CALLCONV OP *     Perl_pp_dor(pTHX);
-PERL_CALLCONV OP *     Perl_pp_dorassign(pTHX);
-PERL_CALLCONV OP *     Perl_pp_dump(pTHX);
-PERL_CALLCONV OP *     Perl_pp_each(pTHX);
-PERL_CALLCONV OP *     Perl_pp_egrent(pTHX);
-PERL_CALLCONV OP *     Perl_pp_ehostent(pTHX);
-PERL_CALLCONV OP *     Perl_pp_enetent(pTHX);
-PERL_CALLCONV OP *     Perl_pp_enter(pTHX);
-PERL_CALLCONV OP *     Perl_pp_entereval(pTHX);
-PERL_CALLCONV OP *     Perl_pp_entergiven(pTHX);
-PERL_CALLCONV OP *     Perl_pp_enteriter(pTHX);
-PERL_CALLCONV OP *     Perl_pp_enterloop(pTHX);
-PERL_CALLCONV OP *     Perl_pp_entersub(pTHX);
-PERL_CALLCONV OP *     Perl_pp_entertry(pTHX);
-PERL_CALLCONV OP *     Perl_pp_enterwhen(pTHX);
-PERL_CALLCONV OP *     Perl_pp_enterwrite(pTHX);
-PERL_CALLCONV OP *     Perl_pp_eof(pTHX);
-PERL_CALLCONV OP *     Perl_pp_eprotoent(pTHX);
-PERL_CALLCONV OP *     Perl_pp_epwent(pTHX);
-PERL_CALLCONV OP *     Perl_pp_eq(pTHX);
-PERL_CALLCONV OP *     Perl_pp_eservent(pTHX);
-PERL_CALLCONV OP *     Perl_pp_exec(pTHX);
-PERL_CALLCONV OP *     Perl_pp_exists(pTHX);
-PERL_CALLCONV OP *     Perl_pp_exit(pTHX);
-PERL_CALLCONV OP *     Perl_pp_exp(pTHX);
-PERL_CALLCONV OP *     Perl_pp_fcntl(pTHX);
-PERL_CALLCONV OP *     Perl_pp_fileno(pTHX);
-PERL_CALLCONV OP *     Perl_pp_flip(pTHX);
-PERL_CALLCONV OP *     Perl_pp_flock(pTHX);
-PERL_CALLCONV OP *     Perl_pp_flop(pTHX);
-PERL_CALLCONV OP *     Perl_pp_fork(pTHX);
-PERL_CALLCONV OP *     Perl_pp_formline(pTHX);
-PERL_CALLCONV OP *     Perl_pp_ftatime(pTHX);
-PERL_CALLCONV OP *     Perl_pp_ftbinary(pTHX);
-PERL_CALLCONV OP *     Perl_pp_ftblk(pTHX);
-PERL_CALLCONV OP *     Perl_pp_ftchr(pTHX);
-PERL_CALLCONV OP *     Perl_pp_ftctime(pTHX);
-PERL_CALLCONV OP *     Perl_pp_ftdir(pTHX);
-PERL_CALLCONV OP *     Perl_pp_fteexec(pTHX);
-PERL_CALLCONV OP *     Perl_pp_fteowned(pTHX);
-PERL_CALLCONV OP *     Perl_pp_fteread(pTHX);
-PERL_CALLCONV OP *     Perl_pp_ftewrite(pTHX);
-PERL_CALLCONV OP *     Perl_pp_ftfile(pTHX);
-PERL_CALLCONV OP *     Perl_pp_ftis(pTHX);
-PERL_CALLCONV OP *     Perl_pp_ftlink(pTHX);
-PERL_CALLCONV OP *     Perl_pp_ftmtime(pTHX);
-PERL_CALLCONV OP *     Perl_pp_ftpipe(pTHX);
-PERL_CALLCONV OP *     Perl_pp_ftrexec(pTHX);
-PERL_CALLCONV OP *     Perl_pp_ftrowned(pTHX);
-PERL_CALLCONV OP *     Perl_pp_ftrread(pTHX);
-PERL_CALLCONV OP *     Perl_pp_ftrwrite(pTHX);
-PERL_CALLCONV OP *     Perl_pp_ftsgid(pTHX);
-PERL_CALLCONV OP *     Perl_pp_ftsize(pTHX);
-PERL_CALLCONV OP *     Perl_pp_ftsock(pTHX);
-PERL_CALLCONV OP *     Perl_pp_ftsuid(pTHX);
-PERL_CALLCONV OP *     Perl_pp_ftsvtx(pTHX);
-PERL_CALLCONV OP *     Perl_pp_fttext(pTHX);
-PERL_CALLCONV OP *     Perl_pp_fttty(pTHX);
-PERL_CALLCONV OP *     Perl_pp_ftzero(pTHX);
-PERL_CALLCONV OP *     Perl_pp_ge(pTHX);
-PERL_CALLCONV OP *     Perl_pp_gelem(pTHX);
-PERL_CALLCONV OP *     Perl_pp_getc(pTHX);
-PERL_CALLCONV OP *     Perl_pp_getlogin(pTHX);
-PERL_CALLCONV OP *     Perl_pp_getpeername(pTHX);
-PERL_CALLCONV OP *     Perl_pp_getpgrp(pTHX);
-PERL_CALLCONV OP *     Perl_pp_getppid(pTHX);
-PERL_CALLCONV OP *     Perl_pp_getpriority(pTHX);
-PERL_CALLCONV OP *     Perl_pp_getsockname(pTHX);
-PERL_CALLCONV OP *     Perl_pp_ggrent(pTHX);
-PERL_CALLCONV OP *     Perl_pp_ggrgid(pTHX);
-PERL_CALLCONV OP *     Perl_pp_ggrnam(pTHX);
-PERL_CALLCONV OP *     Perl_pp_ghbyaddr(pTHX);
-PERL_CALLCONV OP *     Perl_pp_ghbyname(pTHX);
-PERL_CALLCONV OP *     Perl_pp_ghostent(pTHX);
-PERL_CALLCONV OP *     Perl_pp_glob(pTHX);
-PERL_CALLCONV OP *     Perl_pp_gmtime(pTHX);
-PERL_CALLCONV OP *     Perl_pp_gnbyaddr(pTHX);
-PERL_CALLCONV OP *     Perl_pp_gnbyname(pTHX);
-PERL_CALLCONV OP *     Perl_pp_gnetent(pTHX);
-PERL_CALLCONV OP *     Perl_pp_goto(pTHX);
-PERL_CALLCONV OP *     Perl_pp_gpbyname(pTHX);
-PERL_CALLCONV OP *     Perl_pp_gpbynumber(pTHX);
-PERL_CALLCONV OP *     Perl_pp_gprotoent(pTHX);
-PERL_CALLCONV OP *     Perl_pp_gpwent(pTHX);
-PERL_CALLCONV OP *     Perl_pp_gpwnam(pTHX);
-PERL_CALLCONV OP *     Perl_pp_gpwuid(pTHX);
-PERL_CALLCONV OP *     Perl_pp_grepstart(pTHX);
-PERL_CALLCONV OP *     Perl_pp_grepwhile(pTHX);
-PERL_CALLCONV OP *     Perl_pp_gsbyname(pTHX);
-PERL_CALLCONV OP *     Perl_pp_gsbyport(pTHX);
-PERL_CALLCONV OP *     Perl_pp_gservent(pTHX);
-PERL_CALLCONV OP *     Perl_pp_gsockopt(pTHX);
-PERL_CALLCONV OP *     Perl_pp_gt(pTHX);
-PERL_CALLCONV OP *     Perl_pp_gv(pTHX);
-PERL_CALLCONV OP *     Perl_pp_gvsv(pTHX);
-PERL_CALLCONV OP *     Perl_pp_helem(pTHX);
-PERL_CALLCONV OP *     Perl_pp_hex(pTHX);
-PERL_CALLCONV OP *     Perl_pp_hintseval(pTHX);
-PERL_CALLCONV OP *     Perl_pp_hslice(pTHX);
-PERL_CALLCONV OP *     Perl_pp_i_add(pTHX);
-PERL_CALLCONV OP *     Perl_pp_i_divide(pTHX);
-PERL_CALLCONV OP *     Perl_pp_i_eq(pTHX);
-PERL_CALLCONV OP *     Perl_pp_i_ge(pTHX);
-PERL_CALLCONV OP *     Perl_pp_i_gt(pTHX);
-PERL_CALLCONV OP *     Perl_pp_i_le(pTHX);
-PERL_CALLCONV OP *     Perl_pp_i_lt(pTHX);
-PERL_CALLCONV OP *     Perl_pp_i_modulo(pTHX);
-PERL_CALLCONV OP *     Perl_pp_i_multiply(pTHX);
-PERL_CALLCONV OP *     Perl_pp_i_ncmp(pTHX);
-PERL_CALLCONV OP *     Perl_pp_i_ne(pTHX);
-PERL_CALLCONV OP *     Perl_pp_i_negate(pTHX);
-PERL_CALLCONV OP *     Perl_pp_i_subtract(pTHX);
-PERL_CALLCONV OP *     Perl_pp_index(pTHX);
-PERL_CALLCONV OP *     Perl_pp_int(pTHX);
-PERL_CALLCONV OP *     Perl_pp_ioctl(pTHX);
-PERL_CALLCONV OP *     Perl_pp_iter(pTHX);
-PERL_CALLCONV OP *     Perl_pp_join(pTHX);
-PERL_CALLCONV OP *     Perl_pp_keys(pTHX);
-PERL_CALLCONV OP *     Perl_pp_kill(pTHX);
-PERL_CALLCONV OP *     Perl_pp_last(pTHX);
-PERL_CALLCONV OP *     Perl_pp_lc(pTHX);
-PERL_CALLCONV OP *     Perl_pp_lcfirst(pTHX);
-PERL_CALLCONV OP *     Perl_pp_le(pTHX);
-PERL_CALLCONV OP *     Perl_pp_leave(pTHX);
-PERL_CALLCONV OP *     Perl_pp_leaveeval(pTHX);
-PERL_CALLCONV OP *     Perl_pp_leavegiven(pTHX);
-PERL_CALLCONV OP *     Perl_pp_leaveloop(pTHX);
-PERL_CALLCONV OP *     Perl_pp_leavesub(pTHX);
-PERL_CALLCONV OP *     Perl_pp_leavesublv(pTHX);
-PERL_CALLCONV OP *     Perl_pp_leavetry(pTHX);
-PERL_CALLCONV OP *     Perl_pp_leavewhen(pTHX);
-PERL_CALLCONV OP *     Perl_pp_leavewrite(pTHX);
-PERL_CALLCONV OP *     Perl_pp_left_shift(pTHX);
-PERL_CALLCONV OP *     Perl_pp_length(pTHX);
-PERL_CALLCONV OP *     Perl_pp_lineseq(pTHX);
-PERL_CALLCONV OP *     Perl_pp_link(pTHX);
-PERL_CALLCONV OP *     Perl_pp_list(pTHX);
-PERL_CALLCONV OP *     Perl_pp_listen(pTHX);
-PERL_CALLCONV OP *     Perl_pp_localtime(pTHX);
-PERL_CALLCONV OP *     Perl_pp_lock(pTHX);
-PERL_CALLCONV OP *     Perl_pp_log(pTHX);
-PERL_CALLCONV OP *     Perl_pp_lslice(pTHX);
-PERL_CALLCONV OP *     Perl_pp_lstat(pTHX);
-PERL_CALLCONV OP *     Perl_pp_lt(pTHX);
-PERL_CALLCONV OP *     Perl_pp_mapstart(pTHX);
-PERL_CALLCONV OP *     Perl_pp_mapwhile(pTHX);
-PERL_CALLCONV OP *     Perl_pp_match(pTHX);
-PERL_CALLCONV OP *     Perl_pp_method(pTHX);
-PERL_CALLCONV OP *     Perl_pp_method_named(pTHX);
-PERL_CALLCONV OP *     Perl_pp_mkdir(pTHX);
-PERL_CALLCONV OP *     Perl_pp_modulo(pTHX);
-PERL_CALLCONV OP *     Perl_pp_msgctl(pTHX);
-PERL_CALLCONV OP *     Perl_pp_msgget(pTHX);
-PERL_CALLCONV OP *     Perl_pp_msgrcv(pTHX);
-PERL_CALLCONV OP *     Perl_pp_msgsnd(pTHX);
-PERL_CALLCONV OP *     Perl_pp_multiply(pTHX);
-PERL_CALLCONV OP *     Perl_pp_ncmp(pTHX);
-PERL_CALLCONV OP *     Perl_pp_ne(pTHX);
-PERL_CALLCONV OP *     Perl_pp_negate(pTHX);
-PERL_CALLCONV OP *     Perl_pp_next(pTHX);
-PERL_CALLCONV OP *     Perl_pp_nextstate(pTHX);
-PERL_CALLCONV OP *     Perl_pp_not(pTHX);
-PERL_CALLCONV OP *     Perl_pp_null(pTHX);
-PERL_CALLCONV OP *     Perl_pp_oct(pTHX);
-PERL_CALLCONV OP *     Perl_pp_once(pTHX);
-PERL_CALLCONV OP *     Perl_pp_open(pTHX);
-PERL_CALLCONV OP *     Perl_pp_open_dir(pTHX);
-PERL_CALLCONV OP *     Perl_pp_or(pTHX);
-PERL_CALLCONV OP *     Perl_pp_orassign(pTHX);
-PERL_CALLCONV OP *     Perl_pp_ord(pTHX);
-PERL_CALLCONV OP *     Perl_pp_pack(pTHX);
-PERL_CALLCONV OP *     Perl_pp_padany(pTHX);
-PERL_CALLCONV OP *     Perl_pp_padav(pTHX);
-PERL_CALLCONV OP *     Perl_pp_padhv(pTHX);
-PERL_CALLCONV OP *     Perl_pp_padsv(pTHX);
-PERL_CALLCONV OP *     Perl_pp_pipe_op(pTHX);
-PERL_CALLCONV OP *     Perl_pp_pop(pTHX);
-PERL_CALLCONV OP *     Perl_pp_pos(pTHX);
-PERL_CALLCONV OP *     Perl_pp_postdec(pTHX);
-PERL_CALLCONV OP *     Perl_pp_postinc(pTHX);
-PERL_CALLCONV OP *     Perl_pp_pow(pTHX);
-PERL_CALLCONV OP *     Perl_pp_predec(pTHX);
-PERL_CALLCONV OP *     Perl_pp_preinc(pTHX);
-PERL_CALLCONV OP *     Perl_pp_print(pTHX);
-PERL_CALLCONV OP *     Perl_pp_prototype(pTHX);
-PERL_CALLCONV OP *     Perl_pp_prtf(pTHX);
-PERL_CALLCONV OP *     Perl_pp_push(pTHX);
-PERL_CALLCONV OP *     Perl_pp_pushmark(pTHX);
-PERL_CALLCONV OP *     Perl_pp_pushre(pTHX);
-PERL_CALLCONV OP *     Perl_pp_qr(pTHX);
-PERL_CALLCONV OP *     Perl_pp_quotemeta(pTHX);
-PERL_CALLCONV OP *     Perl_pp_rand(pTHX);
-PERL_CALLCONV OP *     Perl_pp_range(pTHX);
-PERL_CALLCONV OP *     Perl_pp_rcatline(pTHX);
-PERL_CALLCONV OP *     Perl_pp_read(pTHX);
-PERL_CALLCONV OP *     Perl_pp_readdir(pTHX);
-PERL_CALLCONV OP *     Perl_pp_readline(pTHX);
-PERL_CALLCONV OP *     Perl_pp_readlink(pTHX);
-PERL_CALLCONV OP *     Perl_pp_recv(pTHX);
-PERL_CALLCONV OP *     Perl_pp_redo(pTHX);
-PERL_CALLCONV OP *     Perl_pp_ref(pTHX);
-PERL_CALLCONV OP *     Perl_pp_refgen(pTHX);
-PERL_CALLCONV OP *     Perl_pp_regcmaybe(pTHX);
-PERL_CALLCONV OP *     Perl_pp_regcomp(pTHX);
-PERL_CALLCONV OP *     Perl_pp_regcreset(pTHX);
-PERL_CALLCONV OP *     Perl_pp_rename(pTHX);
-PERL_CALLCONV OP *     Perl_pp_repeat(pTHX);
-PERL_CALLCONV OP *     Perl_pp_require(pTHX);
-PERL_CALLCONV OP *     Perl_pp_reset(pTHX);
-PERL_CALLCONV OP *     Perl_pp_return(pTHX);
-PERL_CALLCONV OP *     Perl_pp_reverse(pTHX);
-PERL_CALLCONV OP *     Perl_pp_rewinddir(pTHX);
-PERL_CALLCONV OP *     Perl_pp_right_shift(pTHX);
-PERL_CALLCONV OP *     Perl_pp_rindex(pTHX);
-PERL_CALLCONV OP *     Perl_pp_rmdir(pTHX);
-PERL_CALLCONV OP *     Perl_pp_rv2av(pTHX);
-PERL_CALLCONV OP *     Perl_pp_rv2cv(pTHX);
-PERL_CALLCONV OP *     Perl_pp_rv2gv(pTHX);
-PERL_CALLCONV OP *     Perl_pp_rv2hv(pTHX);
-PERL_CALLCONV OP *     Perl_pp_rv2sv(pTHX);
-PERL_CALLCONV OP *     Perl_pp_sassign(pTHX);
-PERL_CALLCONV OP *     Perl_pp_say(pTHX);
-PERL_CALLCONV OP *     Perl_pp_scalar(pTHX);
-PERL_CALLCONV OP *     Perl_pp_schomp(pTHX);
-PERL_CALLCONV OP *     Perl_pp_schop(pTHX);
-PERL_CALLCONV OP *     Perl_pp_scmp(pTHX);
-PERL_CALLCONV OP *     Perl_pp_scope(pTHX);
-PERL_CALLCONV OP *     Perl_pp_seek(pTHX);
-PERL_CALLCONV OP *     Perl_pp_seekdir(pTHX);
-PERL_CALLCONV OP *     Perl_pp_select(pTHX);
-PERL_CALLCONV OP *     Perl_pp_semctl(pTHX);
-PERL_CALLCONV OP *     Perl_pp_semget(pTHX);
-PERL_CALLCONV OP *     Perl_pp_semop(pTHX);
-PERL_CALLCONV OP *     Perl_pp_send(pTHX);
-PERL_CALLCONV OP *     Perl_pp_seq(pTHX);
-PERL_CALLCONV OP *     Perl_pp_setpgrp(pTHX);
-PERL_CALLCONV OP *     Perl_pp_setpriority(pTHX);
-PERL_CALLCONV OP *     Perl_pp_sge(pTHX);
-PERL_CALLCONV OP *     Perl_pp_sgrent(pTHX);
-PERL_CALLCONV OP *     Perl_pp_sgt(pTHX);
-PERL_CALLCONV OP *     Perl_pp_shift(pTHX);
-PERL_CALLCONV OP *     Perl_pp_shmctl(pTHX);
-PERL_CALLCONV OP *     Perl_pp_shmget(pTHX);
-PERL_CALLCONV OP *     Perl_pp_shmread(pTHX);
-PERL_CALLCONV OP *     Perl_pp_shmwrite(pTHX);
-PERL_CALLCONV OP *     Perl_pp_shostent(pTHX);
-PERL_CALLCONV OP *     Perl_pp_shutdown(pTHX);
-PERL_CALLCONV OP *     Perl_pp_sin(pTHX);
-PERL_CALLCONV OP *     Perl_pp_sle(pTHX);
-PERL_CALLCONV OP *     Perl_pp_sleep(pTHX);
-PERL_CALLCONV OP *     Perl_pp_slt(pTHX);
-PERL_CALLCONV OP *     Perl_pp_smartmatch(pTHX);
-PERL_CALLCONV OP *     Perl_pp_sne(pTHX);
-PERL_CALLCONV OP *     Perl_pp_snetent(pTHX);
-PERL_CALLCONV OP *     Perl_pp_socket(pTHX);
-PERL_CALLCONV OP *     Perl_pp_sockpair(pTHX);
-PERL_CALLCONV OP *     Perl_pp_sort(pTHX);
-PERL_CALLCONV OP *     Perl_pp_splice(pTHX);
-PERL_CALLCONV OP *     Perl_pp_split(pTHX);
-PERL_CALLCONV OP *     Perl_pp_sprintf(pTHX);
-PERL_CALLCONV OP *     Perl_pp_sprotoent(pTHX);
-PERL_CALLCONV OP *     Perl_pp_spwent(pTHX);
-PERL_CALLCONV OP *     Perl_pp_sqrt(pTHX);
-PERL_CALLCONV OP *     Perl_pp_srand(pTHX);
-PERL_CALLCONV OP *     Perl_pp_srefgen(pTHX);
-PERL_CALLCONV OP *     Perl_pp_sselect(pTHX);
-PERL_CALLCONV OP *     Perl_pp_sservent(pTHX);
-PERL_CALLCONV OP *     Perl_pp_ssockopt(pTHX);
-PERL_CALLCONV OP *     Perl_pp_stat(pTHX);
-PERL_CALLCONV OP *     Perl_pp_stringify(pTHX);
-PERL_CALLCONV OP *     Perl_pp_stub(pTHX);
-PERL_CALLCONV OP *     Perl_pp_study(pTHX);
-PERL_CALLCONV OP *     Perl_pp_subst(pTHX);
-PERL_CALLCONV OP *     Perl_pp_substcont(pTHX);
-PERL_CALLCONV OP *     Perl_pp_substr(pTHX);
-PERL_CALLCONV OP *     Perl_pp_subtract(pTHX);
-PERL_CALLCONV OP *     Perl_pp_symlink(pTHX);
-PERL_CALLCONV OP *     Perl_pp_syscall(pTHX);
-PERL_CALLCONV OP *     Perl_pp_sysopen(pTHX);
-PERL_CALLCONV OP *     Perl_pp_sysread(pTHX);
-PERL_CALLCONV OP *     Perl_pp_sysseek(pTHX);
-PERL_CALLCONV OP *     Perl_pp_system(pTHX);
-PERL_CALLCONV OP *     Perl_pp_syswrite(pTHX);
-PERL_CALLCONV OP *     Perl_pp_tell(pTHX);
-PERL_CALLCONV OP *     Perl_pp_telldir(pTHX);
-PERL_CALLCONV OP *     Perl_pp_tie(pTHX);
-PERL_CALLCONV OP *     Perl_pp_tied(pTHX);
-PERL_CALLCONV OP *     Perl_pp_time(pTHX);
-PERL_CALLCONV OP *     Perl_pp_tms(pTHX);
-PERL_CALLCONV OP *     Perl_pp_trans(pTHX);
-PERL_CALLCONV OP *     Perl_pp_truncate(pTHX);
-PERL_CALLCONV OP *     Perl_pp_uc(pTHX);
-PERL_CALLCONV OP *     Perl_pp_ucfirst(pTHX);
-PERL_CALLCONV OP *     Perl_pp_umask(pTHX);
-PERL_CALLCONV OP *     Perl_pp_undef(pTHX);
-PERL_CALLCONV OP *     Perl_pp_unlink(pTHX);
-PERL_CALLCONV OP *     Perl_pp_unpack(pTHX);
-PERL_CALLCONV OP *     Perl_pp_unshift(pTHX);
-PERL_CALLCONV OP *     Perl_pp_unstack(pTHX);
-PERL_CALLCONV OP *     Perl_pp_untie(pTHX);
-PERL_CALLCONV OP *     Perl_pp_utime(pTHX);
-PERL_CALLCONV OP *     Perl_pp_values(pTHX);
-PERL_CALLCONV OP *     Perl_pp_vec(pTHX);
-PERL_CALLCONV OP *     Perl_pp_wait(pTHX);
-PERL_CALLCONV OP *     Perl_pp_waitpid(pTHX);
-PERL_CALLCONV OP *     Perl_pp_wantarray(pTHX);
-PERL_CALLCONV OP *     Perl_pp_warn(pTHX);
-PERL_CALLCONV OP *     Perl_pp_xor(pTHX);
+PERL_CALLCONV void     Perl_populate_isa(pTHX_ const char *name, STRLEN len, ...)
+                       __attribute__nonnull__(pTHX_1);
+#define PERL_ARGS_ASSERT_POPULATE_ISA  \
+       assert(name)
+
 PERL_CALLCONV REGEXP*  Perl_pregcomp(pTHX_ SV * const pattern, const U32 flags)
                        __attribute__nonnull__(pTHX_1);
 #define PERL_ARGS_ASSERT_PREGCOMP      \
@@ -3156,7 +2890,6 @@ PERL_CALLCONV void        Perl_pregfree2(pTHX_ REGEXP *rx)
 #define PERL_ARGS_ASSERT_PREGFREE2     \
        assert(rx)
 
-PERL_CALLCONV OP*      Perl_prepend_elem(pTHX_ I32 optype, OP* head, OP* tail);
 PERL_CALLCONV const char*      Perl_prescan_version(pTHX_ const char *s, bool strict, const char** errstr, bool *sqv, int *ssaw_decimal, int *swidth, bool *salpha)
                        __attribute__nonnull__(pTHX_1);
 #define PERL_ARGS_ASSERT_PRESCAN_VERSION       \
@@ -3239,10 +2972,39 @@ PERL_CALLCONV Malloc_t  Perl_realloc(Malloc_t where, MEM_SIZE nbytes)
                        __attribute__warn_unused_result__;
 
 /* PERL_CALLCONV OP*   Perl_ref(pTHX_ OP* o, I32 type); */
-PERL_CALLCONV HV *     Perl_refcounted_he_chain_2hv(pTHX_ const struct refcounted_he *c);
-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 HV *     Perl_refcounted_he_chain_2hv(pTHX_ const struct refcounted_he *c, U32 flags);
+PERL_CALLCONV SV *     Perl_refcounted_he_fetch_pv(pTHX_ const struct refcounted_he *chain, const char *key, U32 hash, U32 flags)
+                       __attribute__nonnull__(pTHX_2);
+#define PERL_ARGS_ASSERT_REFCOUNTED_HE_FETCH_PV        \
+       assert(key)
+
+PERL_CALLCONV SV *     Perl_refcounted_he_fetch_pvn(pTHX_ const struct refcounted_he *chain, const char *keypv, STRLEN keylen, U32 hash, U32 flags)
+                       __attribute__nonnull__(pTHX_2);
+#define PERL_ARGS_ASSERT_REFCOUNTED_HE_FETCH_PVN       \
+       assert(keypv)
+
+PERL_CALLCONV SV *     Perl_refcounted_he_fetch_sv(pTHX_ const struct refcounted_he *chain, SV *key, U32 hash, U32 flags)
+                       __attribute__nonnull__(pTHX_2);
+#define PERL_ARGS_ASSERT_REFCOUNTED_HE_FETCH_SV        \
+       assert(key)
+
 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);
+PERL_CALLCONV struct refcounted_he *   Perl_refcounted_he_inc(pTHX_ struct refcounted_he *he);
+PERL_CALLCONV struct refcounted_he *   Perl_refcounted_he_new_pv(pTHX_ struct refcounted_he *parent, const char *key, U32 hash, SV *value, U32 flags)
+                       __attribute__nonnull__(pTHX_2);
+#define PERL_ARGS_ASSERT_REFCOUNTED_HE_NEW_PV  \
+       assert(key)
+
+PERL_CALLCONV struct refcounted_he *   Perl_refcounted_he_new_pvn(pTHX_ struct refcounted_he *parent, const char *keypv, STRLEN keylen, U32 hash, SV *value, U32 flags)
+                       __attribute__nonnull__(pTHX_2);
+#define PERL_ARGS_ASSERT_REFCOUNTED_HE_NEW_PVN \
+       assert(keypv)
+
+PERL_CALLCONV struct refcounted_he *   Perl_refcounted_he_new_sv(pTHX_ struct refcounted_he *parent, SV *key, U32 hash, SV *value, U32 flags)
+                       __attribute__nonnull__(pTHX_2);
+#define PERL_ARGS_ASSERT_REFCOUNTED_HE_NEW_SV  \
+       assert(key)
+
 PERL_CALLCONV SV*      Perl_reg_named_buff(pTHX_ REGEXP * const rx, SV * const key, SV * const value, const U32 flags)
                        __attribute__nonnull__(pTHX_1);
 #define PERL_ARGS_ASSERT_REG_NAMED_BUFF        \
@@ -3356,8 +3118,9 @@ PERL_CALLCONV void        Perl_repeatcpy(char* to, const char* from, I32 len, I32 count
 #define PERL_ARGS_ASSERT_REPEATCPY     \
        assert(to); assert(from)
 
-PERL_CALLCONV void     Perl_report_evil_fh(pTHX_ const GV *gv, const IO *io, I32 op);
+PERL_CALLCONV void     Perl_report_evil_fh(pTHX_ const GV *gv);
 PERL_CALLCONV void     Perl_report_uninit(pTHX_ const SV *uninit_sv);
+PERL_CALLCONV void     Perl_report_wrongway_fh(pTHX_ const GV *gv, const char have);
 PERL_CALLCONV void     Perl_require_pv(pTHX_ const char* pv)
                        __attribute__nonnull__(pTHX_1);
 #define PERL_ARGS_ASSERT_REQUIRE_PV    \
@@ -3383,6 +3146,11 @@ PERL_CALLCONV int        Perl_rsignal_save(pTHX_ int i, Sighandler_t t1, Sigsave_t* sav
 PERL_CALLCONV Sighandler_t     Perl_rsignal_state(pTHX_ int i);
 PERL_CALLCONV int      Perl_runops_debug(pTHX);
 PERL_CALLCONV int      Perl_runops_standard(pTHX);
+PERL_CALLCONV CV*      Perl_rv2cv_op_cv(pTHX_ OP *cvop, U32 flags)
+                       __attribute__nonnull__(pTHX_1);
+#define PERL_ARGS_ASSERT_RV2CV_OP_CV   \
+       assert(cvop)
+
 PERL_CALLCONV void     Perl_rxres_save(pTHX_ void **rsp, REGEXP *rx)
                        __attribute__nonnull__(pTHX_1)
                        __attribute__nonnull__(pTHX_2);
@@ -3667,7 +3435,6 @@ PERL_CALLCONV char*       Perl_scan_vstring(pTHX_ const char *s, const char *const e,
 #define PERL_ARGS_ASSERT_SCAN_VSTRING  \
        assert(s); assert(e); assert(sv)
 
-PERL_CALLCONV OP*      Perl_scope(pTHX_ OP* o);
 PERL_CALLCONV char*    Perl_screaminstr(pTHX_ SV *bigstr, SV *littlestr, I32 start_shift, I32 end_shift, I32 *old_posp, I32 last)
                        __attribute__nonnull__(pTHX_1)
                        __attribute__nonnull__(pTHX_2)
@@ -3887,16 +3654,17 @@ PERL_CALLCONV void      Perl_sv_chop(pTHX_ SV *const sv, const char *const ptr)
 
 PERL_CALLCONV I32      Perl_sv_clean_all(pTHX);
 PERL_CALLCONV void     Perl_sv_clean_objs(pTHX);
-PERL_CALLCONV void     Perl_sv_clear(pTHX_ SV *const sv)
+PERL_CALLCONV void     Perl_sv_clear(pTHX_ SV *const orig_sv)
                        __attribute__nonnull__(pTHX_1);
 #define PERL_ARGS_ASSERT_SV_CLEAR      \
-       assert(sv)
+       assert(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)
+                       __attribute__deprecated__
                        __attribute__nonnull__(pTHX_1)
                        __attribute__nonnull__(pTHX_2)
                        __attribute__nonnull__(pTHX_3)
@@ -3904,6 +3672,14 @@ PERL_CALLCONV OP*        Perl_sv_compile_2op(pTHX_ SV *sv, OP **startop, const char *co
 #define PERL_ARGS_ASSERT_SV_COMPILE_2OP        \
        assert(sv); assert(startop); assert(code); assert(padp)
 
+PERL_CALLCONV OP*      Perl_sv_compile_2op_is_broken(pTHX_ SV *sv, OP **startop, const char *code, PAD **padp)
+                       __attribute__nonnull__(pTHX_1)
+                       __attribute__nonnull__(pTHX_2)
+                       __attribute__nonnull__(pTHX_3)
+                       __attribute__nonnull__(pTHX_4);
+#define PERL_ARGS_ASSERT_SV_COMPILE_2OP_IS_BROKEN      \
+       assert(sv); assert(startop); assert(code); assert(padp)
+
 PERL_CALLCONV void     Perl_sv_copypv(pTHX_ SV *const dsv, SV *const ssv)
                        __attribute__nonnull__(pTHX_1)
                        __attribute__nonnull__(pTHX_2);
@@ -3939,7 +3715,7 @@ PERL_CALLCONV void        Perl_sv_dump(pTHX_ SV* sv)
        assert(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); */
 #define PERL_ARGS_ASSERT_SV_FORCE_NORMAL       \
@@ -4266,6 +4042,11 @@ PERL_CALLCONV int        Perl_sv_unmagic(pTHX_ SV *const sv, const int type)
 #define PERL_ARGS_ASSERT_SV_UNMAGIC    \
        assert(sv)
 
+PERL_CALLCONV int      Perl_sv_unmagicext(pTHX_ SV *const sv, const int type, MGVTBL *vtbl)
+                       __attribute__nonnull__(pTHX_1);
+#define PERL_ARGS_ASSERT_SV_UNMAGICEXT \
+       assert(sv)
+
 /* PERL_CALLCONV void  Perl_sv_unref(pTHX_ SV* sv)
                        __attribute__nonnull__(pTHX_1); */
 #define PERL_ARGS_ASSERT_SV_UNREF      \
@@ -4406,6 +4187,14 @@ PERL_CALLCONV void       Perl_taint_proper(pTHX_ const char* f, const char *const s)
 #define PERL_ARGS_ASSERT_TAINT_PROPER  \
        assert(s)
 
+PERL_CALLCONV OP *     Perl_tied_method(pTHX_ const char *const methname, SV **sp, SV *const sv, const MAGIC *const mg, const U32 flags, U32 argc, ...)
+                       __attribute__nonnull__(pTHX_1)
+                       __attribute__nonnull__(pTHX_2)
+                       __attribute__nonnull__(pTHX_3)
+                       __attribute__nonnull__(pTHX_4);
+#define PERL_ARGS_ASSERT_TIED_METHOD   \
+       assert(methname); assert(sp); assert(sv); assert(mg)
+
 PERL_CALLCONV void     Perl_tmps_grow(pTHX_ I32 n);
 PERL_CALLCONV UV       Perl_to_uni_fold(pTHX_ UV c, U8 *p, STRLEN *lenp)
                        __attribute__nonnull__(pTHX_2)
@@ -4856,7 +4645,7 @@ STATIC int        S_sv_2iuv_non_preserve(pTHX_ SV *const sv, I32 numtype)
 #endif
 #if !defined(PERL_DISABLE_PMC)
 #  if defined(PERL_IN_PP_CTL_C)
-STATIC PerlIO *        S_doopen_pm(pTHX_ const char *name, const STRLEN namelen)
+STATIC PerlIO *        S_doopen_pm(pTHX_ SV *name)
                        __attribute__warn_unused_result__
                        __attribute__nonnull__(pTHX_1);
 #define PERL_ARGS_ASSERT_DOOPEN_PM     \
@@ -5495,12 +5284,6 @@ STATIC HE*       S_new_he(pTHX)
                        __attribute__malloc__
                        __attribute__warn_unused_result__;
 
-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)
-
 STATIC SV *    S_refcounted_he_value(pTHX_ const struct refcounted_he *he)
                        __attribute__nonnull__(pTHX_1);
 #define PERL_ARGS_ASSERT_REFCOUNTED_HE_VALUE   \
@@ -5558,13 +5341,22 @@ STATIC void     S_save_magic(pTHX_ I32 mgs_ix, SV *sv)
 #define PERL_ARGS_ASSERT_SAVE_MAGIC    \
        assert(sv)
 
-STATIC void    S_unwind_handler_stack(pTHX_ const void *p)
-                       __attribute__nonnull__(pTHX_1);
-#define PERL_ARGS_ASSERT_UNWIND_HANDLER_STACK  \
-       assert(p)
-
+STATIC void    S_unwind_handler_stack(pTHX_ const void *p);
 #endif
 #if defined(PERL_IN_MRO_C)
+STATIC void    S_mro_clean_isarev(pTHX_ HV * const isa, const char * const name, const STRLEN len, HV * const exceptions)
+                       __attribute__nonnull__(pTHX_1)
+                       __attribute__nonnull__(pTHX_2);
+#define PERL_ARGS_ASSERT_MRO_CLEAN_ISAREV      \
+       assert(isa); assert(name)
+
+STATIC void    S_mro_gather_and_rename(pTHX_ HV * const stashes, HV * const seen_stashes, HV *stash, HV *oldstash, SV *namesv)
+                       __attribute__nonnull__(pTHX_1)
+                       __attribute__nonnull__(pTHX_2)
+                       __attribute__nonnull__(pTHX_5);
+#define PERL_ARGS_ASSERT_MRO_GATHER_AND_RENAME \
+       assert(stashes); assert(seen_stashes); assert(namesv)
+
 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        \
@@ -5636,11 +5428,6 @@ STATIC OP*       S_is_inplace_av(pTHX_ OP* o, OP* oright)
 STATIC I32     S_is_list_assignment(pTHX_ const OP *o)
                        __attribute__warn_unused_result__;
 
-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);
 STATIC bool    S_looks_like_bool(pTHX_ const OP* o)
                        __attribute__nonnull__(pTHX_1);
@@ -5824,6 +5611,12 @@ STATIC void      S_usage(pTHX_ const char *name)
 
 #endif
 #if defined(PERL_IN_PP_C)
+STATIC void    S_do_chomp(pTHX_ SV *retval, SV *sv, bool chomping)
+                       __attribute__nonnull__(pTHX_1)
+                       __attribute__nonnull__(pTHX_2);
+#define PERL_ARGS_ASSERT_DO_CHOMP      \
+       assert(retval); assert(sv)
+
 STATIC OP*     S_do_delete_local(pTHX);
 STATIC SV*     S_refto(pTHX_ SV* sv)
                        __attribute__warn_unused_result__
@@ -5843,7 +5636,7 @@ PERL_CALLCONV GV* Perl_softref2xv(pTHX_ SV *const sv, const char *const what, co
 
 #endif
 #if defined(PERL_IN_PP_CTL_C)
-STATIC PerlIO *        S_check_type_and_open(pTHX_ const char *name)
+STATIC PerlIO *        S_check_type_and_open(pTHX_ SV *name)
                        __attribute__warn_unused_result__
                        __attribute__nonnull__(pTHX_1);
 #define PERL_ARGS_ASSERT_CHECK_TYPE_AND_OPEN   \
@@ -6115,14 +5908,6 @@ STATIC SV *      S_space_join_names_mortal(pTHX_ char *const *array)
 #define PERL_ARGS_ASSERT_SPACE_JOIN_NAMES_MORTAL       \
        assert(array)
 
-STATIC OP *    S_tied_handle_method(pTHX_ const char *const methname, SV **sp, IO *const io, MAGIC *const mg, const U32 flags, ...)
-                       __attribute__nonnull__(pTHX_1)
-                       __attribute__nonnull__(pTHX_2)
-                       __attribute__nonnull__(pTHX_3)
-                       __attribute__nonnull__(pTHX_4);
-#define PERL_ARGS_ASSERT_TIED_HANDLE_METHOD    \
-       assert(methname); assert(sp); assert(io); assert(mg)
-
 #endif
 #if defined(PERL_IN_REGCOMP_C)
 STATIC U32     S_add_data(struct RExC_state_t *pRExC_state, U32 n, const char *s)
@@ -6353,7 +6138,7 @@ STATIC U8*        S_reghopmaybe3(U8 *s, I32 off, const U8 *lim)
 #define PERL_ARGS_ASSERT_REGHOPMAYBE3  \
        assert(s); assert(lim)
 
-STATIC bool    S_reginclass(pTHX_ const regexp *prog, const regnode *n, const U8 *p, STRLEN *lenp, bool do_utf8sv_is_utf8)
+STATIC bool    S_reginclass(pTHX_ const regexp * const prog, const regnode * const n, const U8 * const p, STRLEN *lenp, bool const do_utf8sv_is_utf8)
                        __attribute__warn_unused_result__
                        __attribute__nonnull__(pTHX_2)
                        __attribute__nonnull__(pTHX_3);
@@ -6429,6 +6214,11 @@ STATIC void      S_assert_uft8_cache_coherent(pTHX_ const char *const func, STRLEN fr
 #define PERL_ARGS_ASSERT_ASSERT_UFT8_CACHE_COHERENT    \
        assert(func); assert(sv)
 
+STATIC bool    S_curse(pTHX_ SV * const sv, const bool check_refcnt)
+                       __attribute__nonnull__(pTHX_1);
+#define PERL_ARGS_ASSERT_CURSE \
+       assert(sv)
+
 STATIC I32     S_expect_number(pTHX_ char **const pattern)
                        __attribute__warn_unused_result__
                        __attribute__nonnull__(pTHX_1);
@@ -6782,11 +6572,6 @@ STATIC void      S_start_force(pTHX_ int where);
 #  endif
 #endif
 #if defined(PERL_IN_UNIVERSAL_C)
-STATIC HV *    S_get_isa_hash(pTHX_ HV *const stash)
-                       __attribute__nonnull__(pTHX_1);
-#define PERL_ARGS_ASSERT_GET_ISA_HASH  \
-       assert(stash)
-
 STATIC bool    S_isa_lookup(pTHX_ HV *stash, const char * const name)
                        __attribute__nonnull__(pTHX_1)
                        __attribute__nonnull__(pTHX_2);
@@ -7095,8 +6880,11 @@ PERL_CALLCONV PERL_CONTEXT*      Perl_cx_dup(pTHX_ PERL_CONTEXT* cx, I32 ix, I32 max,
 #define PERL_ARGS_ASSERT_CX_DUP        \
        assert(param)
 
-PERL_CALLCONV DIR*     Perl_dirp_dup(pTHX_ DIR *const dp)
-                       __attribute__warn_unused_result__;
+PERL_CALLCONV DIR*     Perl_dirp_dup(pTHX_ DIR *const dp, CLONE_PARAMS *const param)
+                       __attribute__warn_unused_result__
+                       __attribute__nonnull__(pTHX_2);
+#define PERL_ARGS_ASSERT_DIRP_DUP      \
+       assert(param)
 
 PERL_CALLCONV PerlIO*  Perl_fp_dup(pTHX_ PerlIO *const fp, const char type, CLONE_PARAMS *const param)
                        __attribute__nonnull__(pTHX_3);
@@ -7301,5 +7089,8 @@ PERL_CALLCONV int Perl_do_spawn_nowait(pTHX_ char* cmd)
        assert(cmd)
 
 #endif
+#ifdef PERL_CORE
+#  include "pp_proto.h"
+#endif
 END_EXTERN_C
 /* ex: set ro: */