This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Create fcn for lossless conversion of NV to IV
[perl5.git] / embed.fnc
index e16c8a6..259affd 100644 (file)
--- a/embed.fnc
+++ b/embed.fnc
@@ -282,6 +282,7 @@ ApdR        |SV**   |av_fetch       |NN AV *av|SSize_t key|I32 lval
 Apd    |void   |av_fill        |NN AV *av|SSize_t fill
 ApdR   |SSize_t|av_len         |NN AV *av
 ApdR   |AV*    |av_make        |SSize_t size|NN SV **strp
+p      |SV*    |av_nonelem     |NN AV *av|SSize_t ix
 Apd    |SV*    |av_pop         |NN AV *av
 ApdoxM |void   |av_create_and_push|NN AV **const avp|NN SV *const val
 Apd    |void   |av_push        |NN AV *av|NN SV *val
@@ -357,8 +358,8 @@ Afnp        |void   |sv_catpvf_nocontext|NN SV *const sv|NN const char *const pat|...
 Afnp   |void   |sv_setpvf_nocontext|NN SV *const sv|NN const char *const pat|...
 Afnp   |void   |sv_catpvf_mg_nocontext|NN SV *const sv|NN const char *const pat|...
 Afnp   |void   |sv_setpvf_mg_nocontext|NN SV *const sv|NN const char *const pat|...
-Afnp   |int    |fprintf_nocontext|NN PerlIO *stream|NN const char *format|...
-Afnp   |int    |printf_nocontext|NN const char *format|...
+Abfnp  |int    |fprintf_nocontext|NN PerlIO *stream|NN const char *format|...
+Abfnp  |int    |printf_nocontext|NN const char *format|...
 #endif
 : Used in pp.c
 p      |SV *   |core_prototype |NULLOK SV *sv|NN const char *name \
@@ -417,7 +418,7 @@ Ap  |void   |dounwind       |I32 cxix
 pmb    |bool|do_aexec  |NULLOK SV* really|NN SV** mark|NN SV** sp
 : Used in pp_sys.c
 p      |bool|do_aexec5 |NULLOK SV* really|NN SV** mark|NN SV** sp|int fd|int do_report
-A    |int    |do_binmode     |NN PerlIO *fp|int iotype|int mode
+Abp    |int    |do_binmode     |NN PerlIO *fp|int iotype|int mode
 : Used in pp.c
 Ap     |bool   |do_close       |NULLOK GV* gv|bool not_implicit
 : Defined in doio.c, used only in pp_sys.c
@@ -439,6 +440,7 @@ p   |bool|do_exec3  |NN const char *incmd|int fd|int do_report
 #endif
 #if defined(PERL_IN_DOIO_C)
 s      |void   |exec_failed    |NN const char *cmd|int fd|int do_report
+s      |bool   |argvout_final  |NN MAGIC *mg|NN IO *io|bool not_implicit
 #endif
 #if defined(HAS_MSG) || defined(HAS_SEM) || defined(HAS_SHM)
 : Defined in doio.c, used only in pp_sys.c
@@ -461,7 +463,7 @@ Ap  |void   |do_join        |NN SV *sv|NN SV *delim|NN SV **mark|NN SV **sp
 pR     |I32    |do_ncmp        |NN SV *const left|NN SV *const right
 Apmb   |bool   |do_open        |NN GV* gv|NN const char* name|I32 len|int as_raw \
                                |int rawmode|int rawperm|NULLOK PerlIO* supplied_fp
-A    |bool   |do_open9       |NN GV *gv|NN const char *name|I32 len|int as_raw \
+Abp    |bool   |do_open9       |NN GV *gv|NN const char *name|I32 len|int as_raw \
                                |int rawmode|int rawperm|NULLOK PerlIO *supplied_fp \
                                |NN SV *svs|I32 num
 pn     |void   |setfd_cloexec|int fd
@@ -561,6 +563,7 @@ i   |OP*    |newMETHOP_internal     |I32 type|I32 flags|NULLOK OP* dynamic_meth \
                                        |NULLOK SV* const_meth
 : FIXME
 s      |OP*    |fold_constants |NN OP * const o
+s      |OP*    |traverse_op_tree|NN OP* top|NN OP* o
 #endif
 Afpd   |char*  |form           |NN const char* pat|...
 Ap     |char*  |vform          |NN const char* pat|NULLOK va_list* args
@@ -588,7 +591,7 @@ ApR |GV*    |gv_autoload_pv |NULLOK HV* stash|NN const char* namepv \
 ApR    |GV*    |gv_autoload_pvn        |NULLOK HV* stash|NN const char* name \
                                         |STRLEN len|U32 flags
 Ap     |void   |gv_check       |NN HV* stash
-A    |void   |gv_efullname   |NN SV* sv|NN const GV* gv
+Abp    |void   |gv_efullname   |NN SV* sv|NN const GV* gv
 Apmb   |void   |gv_efullname3  |NN SV* sv|NN const GV* gv|NULLOK const char* prefix
 Ap     |void   |gv_efullname4  |NN SV* sv|NN const GV* gv|NULLOK const char* prefix|bool keepmain
 Ap     |GV*    |gv_fetchfile   |NN const char* name
@@ -618,7 +621,7 @@ ApM |GV*    |gv_fetchmethod_pv_flags|NN HV* stash|NN const char* name \
 ApM    |GV*    |gv_fetchmethod_pvn_flags|NN HV* stash|NN const char* name \
                                |const STRLEN len|U32 flags
 Ap     |GV*    |gv_fetchpv     |NN const char *nambeg|I32 add|const svtype sv_type
-A    |void   |gv_fullname    |NN SV* sv|NN const GV* gv
+Abp    |void   |gv_fullname    |NN SV* sv|NN const GV* gv
 Apmb   |void   |gv_fullname3   |NN SV* sv|NN const GV* gv|NULLOK const char* prefix
 Ap     |void   |gv_fullname4   |NN SV* sv|NN const GV* gv|NULLOK const char* prefix|bool keepmain
 : Used in scope.c
@@ -744,28 +747,29 @@ ApR       |I32    |is_lvalue_sub
 : Used in cop.h
 XopR   |I32    |was_lvalue_sub
 ApMRnP |STRLEN |_is_utf8_char_helper|NN const U8 * const s|NN const U8 * e|const U32 flags
-ADMpR  |U32    |to_uni_upper_lc|U32 c
-ADMpR  |U32    |to_uni_title_lc|U32 c
-ADMpR  |U32    |to_uni_lower_lc|U32 c
-ADMpR  |bool   |is_uni_alnum   |UV c
-ADMpR  |bool   |is_uni_alnumc  |UV c
-ADMpR  |bool   |is_uni_idfirst |UV c
-ADMpR  |bool   |is_uni_alpha   |UV c
-ADMpPR |bool   |is_uni_ascii   |UV c
-ADMpPR |bool   |is_uni_blank   |UV c
-ADMpPR |bool   |is_uni_space   |UV c
-ADMpPR |bool   |is_uni_cntrl   |UV c
-ADMpR  |bool   |is_uni_graph   |UV c
-ADMpR  |bool   |is_uni_digit   |UV c
-ADMpR  |bool   |is_uni_upper   |UV c
-ADMpR  |bool   |is_uni_lower   |UV c
-ADMpR  |bool   |is_uni_print   |UV c
-ADMpR  |bool   |is_uni_punct   |UV c
-ADMpPR |bool   |is_uni_xdigit  |UV c
+AbDMpR |U32    |to_uni_upper_lc|U32 c
+AbDMpR |U32    |to_uni_title_lc|U32 c
+AbDMpR |U32    |to_uni_lower_lc|U32 c
+AbDMpR |bool   |is_uni_alnum   |UV c
+AbDMpR |bool   |is_uni_alnumc  |UV c
+AbDMpR |bool   |is_uni_idfirst |UV c
+AbDMpR |bool   |is_uni_alpha   |UV c
+AbDMpPR        |bool   |is_uni_ascii   |UV c
+AbDMpPR        |bool   |is_uni_blank   |UV c
+AbDMpPR        |bool   |is_uni_space   |UV c
+AbDMpPR        |bool   |is_uni_cntrl   |UV c
+AbDMpR |bool   |is_uni_graph   |UV c
+AbDMpR |bool   |is_uni_digit   |UV c
+AbDMpR |bool   |is_uni_upper   |UV c
+AbDMpR |bool   |is_uni_lower   |UV c
+AbDMpR |bool   |is_uni_print   |UV c
+AbDMpR |bool   |is_uni_punct   |UV c
+AbDMpPR        |bool   |is_uni_xdigit  |UV c
 AMp    |UV     |to_uni_upper   |UV c|NN U8 *p|NN STRLEN *lenp
 AMp    |UV     |to_uni_title   |UV c|NN U8 *p|NN STRLEN *lenp
-ADMpR  |bool   |isIDFIRST_lazy |NN const char* p
-ADMpR  |bool   |isALNUM_lazy   |NN const char* p
+AbDMpR |bool   |isIDFIRST_lazy |NN const char* p
+AbDMpR |bool   |isALNUM_lazy   |NN const char* p
+p      |void   |init_uniprops
 #ifdef PERL_IN_UTF8_C
 snR    |U8     |to_lower_latin1|const U8 c|NULLOK U8 *p|NULLOK STRLEN *lenp  \
                |const char dummy
@@ -776,7 +780,7 @@ snR |int    |is_utf8_cp_above_31_bits|NN const U8 * const s             \
 #  endif
 #endif
 #if defined(PERL_IN_UTF8_C) || defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_REGEXEC_C)
-EX   |UV        |_to_fold_latin1|const U8 c|NN U8 *p|NN STRLEN *lenp|const unsigned int flags
+EXnp   |UV        |_to_fold_latin1|const U8 c|NN U8 *p|NN STRLEN *lenp|const unsigned int flags
 #endif
 #if defined(PERL_IN_UTF8_C) || defined(PERL_IN_PP_C)
 p      |UV     |_to_upper_title_latin1|const U8 c|NN U8 *p|NN STRLEN *lenp|const char S_or_s
@@ -784,29 +788,29 @@ p |UV     |_to_upper_title_latin1|const U8 c|NN U8 *p|NN STRLEN *lenp|const char S_o
 AMp    |UV     |to_uni_lower   |UV c|NN U8 *p|NN STRLEN *lenp
 AMmp   |UV     |to_uni_fold    |UV c|NN U8 *p|NN STRLEN *lenp
 AMp    |UV     |_to_uni_fold_flags|UV c|NN U8 *p|NN STRLEN *lenp|U8 flags
-ADMpR  |bool   |is_uni_alnum_lc|UV c
-ADMpR  |bool   |is_uni_alnumc_lc|UV c
-ADMpR  |bool   |is_uni_idfirst_lc|UV c
+AbDMpR |bool   |is_uni_alnum_lc|UV c
+AbDMpR |bool   |is_uni_alnumc_lc|UV c
+AbDMpR |bool   |is_uni_idfirst_lc|UV c
 AMpR   |bool   |_is_uni_perl_idcont|UV c
 AMpR   |bool   |_is_uni_perl_idstart|UV c
-ADMpR  |bool   |is_uni_alpha_lc|UV c
-ADMpPR |bool   |is_uni_ascii_lc|UV c
-ADMpPR |bool   |is_uni_space_lc|UV c
-ADMpPR |bool   |is_uni_blank_lc|UV c
-ADMpPR |bool   |is_uni_cntrl_lc|UV c
-ADMpR  |bool   |is_uni_graph_lc|UV c
-ADMpR  |bool   |is_uni_digit_lc|UV c
-ADMpR  |bool   |is_uni_upper_lc|UV c
-ADMpR  |bool   |is_uni_lower_lc|UV c
-ADMpR  |bool   |is_uni_print_lc|UV c
-ADMpR  |bool   |is_uni_punct_lc|UV c
-ADMpPR |bool   |is_uni_xdigit_lc|UV c
+AbDMpR |bool   |is_uni_alpha_lc|UV c
+AbDMpPR        |bool   |is_uni_ascii_lc|UV c
+AbDMpPR        |bool   |is_uni_space_lc|UV c
+AbDMpPR        |bool   |is_uni_blank_lc|UV c
+AbDMpPR        |bool   |is_uni_cntrl_lc|UV c
+AbDMpR |bool   |is_uni_graph_lc|UV c
+AbDMpR |bool   |is_uni_digit_lc|UV c
+AbDMpR |bool   |is_uni_upper_lc|UV c
+AbDMpR |bool   |is_uni_lower_lc|UV c
+AbDMpR |bool   |is_uni_print_lc|UV c
+AbDMpR |bool   |is_uni_punct_lc|UV c
+AbDMpPR        |bool   |is_uni_xdigit_lc|UV c
 AndmoR |bool   |is_utf8_invariant_string|NN const U8* const s              \
                |STRLEN len
 AnidR  |bool   |is_utf8_invariant_string_loc|NN const U8* const s          \
                |STRLEN len                                                 \
                |NULLOK const U8 ** ep
-#if ! defined(EBCDIC) && ! defined USING_MSVC6
+#ifndef EBCDIC
 AniR   |unsigned int|_variant_byte_number|PERL_UINTMAX_T word
 #endif
 #if defined(PERL_CORE) || defined(PERL_EXT)
@@ -819,15 +823,21 @@ AmnpdRP   |bool   |is_invariant_string|NN const U8* const s|STRLEN len
 EXnidR |bool   |is_utf8_non_invariant_string|NN const U8* const s          \
                |STRLEN len
 #endif
-AnpdD  |STRLEN |is_utf8_char   |NN const U8 *s
+AbnpdD |STRLEN |is_utf8_char   |NN const U8 *s
 Abmnpd |STRLEN |is_utf8_char_buf|NN const U8 *buf|NN const U8 *buf_end
+AnidR  |Size_t |isUTF8_CHAR|NN const U8 * const s0                         \
+                           |NN const U8 * const e
+AnidR  |Size_t |isSTRICT_UTF8_CHAR |NN const U8 * const s0                 \
+                                   |NN const U8 * const e
+AnidR  |Size_t |isC9_STRICT_UTF8_CHAR |NN const U8 * const s0              \
+                                      |NN const U8 * const e
 AnmdpR |bool   |is_utf8_string |NN const U8 *s|STRLEN len
 AnidR  |bool   |is_utf8_string_flags                                       \
                |NN const U8 *s|STRLEN len|const U32 flags
 AnmdpR |bool   |is_strict_utf8_string|NN const U8 *s|STRLEN len
 AnmdpR |bool   |is_c9strict_utf8_string|NN const U8 *s|STRLEN len
 Anpdmb |bool   |is_utf8_string_loc                                         \
-               |NN const U8 *s|STRLEN len|NN const U8 **ep
+               |NN const U8 *s|const STRLEN len|NN const U8 **ep
 Andm   |bool   |is_utf8_string_loc_flags                                   \
                |NN const U8 *s|STRLEN len|NN const U8 **ep                 \
                |const U32 flags
@@ -867,10 +877,10 @@ AMpR      |bool   |_is_utf8_FOO|U8 classnum|NN const U8 * const p             \
                |NN const char * const file|const unsigned line
 AMpR   |bool   |_is_utf8_FOO_with_len|const U8 classnum|NN const U8 *p     \
                |NN const U8 * const e
-ADMpR  |bool   |is_utf8_alnum  |NN const U8 *p
-ADMpR  |bool   |is_utf8_alnumc |NN const U8 *p
-ADMpR  |bool   |is_utf8_idfirst|NN const U8 *p
-ADMpR  |bool   |is_utf8_xidfirst|NN const U8 *p
+AbDMpR |bool   |is_utf8_alnum  |NN const U8 *p
+AbDMpR |bool   |is_utf8_alnumc |NN const U8 *p
+AbDMpR |bool   |is_utf8_idfirst|NN const U8 *p
+AbDMpR |bool   |is_utf8_xidfirst|NN const U8 *p
 AMpR   |bool   |_is_utf8_idcont|NN const U8 *p
 AMpR   |bool   |_is_utf8_idstart|NN const U8 *p
 AMpR   |bool   |_is_utf8_xidcont|NN const U8 *p
@@ -879,27 +889,29 @@ AMpR      |bool   |_is_utf8_perl_idcont_with_len|NN const U8 *p               \
                |NN const U8 * const e
 AMpR   |bool   |_is_utf8_perl_idstart_with_len|NN const U8 *p              \
                |NN const U8 * const e
-ADMpR  |bool   |is_utf8_idcont |NN const U8 *p
-ADMpR  |bool   |is_utf8_xidcont        |NN const U8 *p
-ADMpR  |bool   |is_utf8_alpha  |NN const U8 *p
-ADMpR  |bool   |is_utf8_ascii  |NN const U8 *p
-ADMpR  |bool   |is_utf8_blank  |NN const U8 *p
-ADMpR  |bool   |is_utf8_space  |NN const U8 *p
-ADMpR  |bool   |is_utf8_perl_space     |NN const U8 *p
-ADMpR  |bool   |is_utf8_perl_word      |NN const U8 *p
-ADMpR  |bool   |is_utf8_cntrl  |NN const U8 *p
-ADMpR  |bool   |is_utf8_digit  |NN const U8 *p
-ADMpR  |bool   |is_utf8_posix_digit    |NN const U8 *p
-ADMpR  |bool   |is_utf8_graph  |NN const U8 *p
-ADMpR  |bool   |is_utf8_upper  |NN const U8 *p
-ADMpR  |bool   |is_utf8_lower  |NN const U8 *p
-ADMpR  |bool   |is_utf8_print  |NN const U8 *p
-ADMpR  |bool   |is_utf8_punct  |NN const U8 *p
-ADMpR  |bool   |is_utf8_xdigit |NN const U8 *p
+AbDMpR |bool   |is_utf8_idcont |NN const U8 *p
+AbDMpR |bool   |is_utf8_xidcont        |NN const U8 *p
+AbDMpR |bool   |is_utf8_alpha  |NN const U8 *p
+AbDMpR |bool   |is_utf8_ascii  |NN const U8 *p
+AbDMpR |bool   |is_utf8_blank  |NN const U8 *p
+AbDMpR |bool   |is_utf8_space  |NN const U8 *p
+AbDMpR |bool   |is_utf8_perl_space     |NN const U8 *p
+AbDMpR |bool   |is_utf8_perl_word      |NN const U8 *p
+AbDMpR |bool   |is_utf8_cntrl  |NN const U8 *p
+AbDMpR |bool   |is_utf8_digit  |NN const U8 *p
+AbDMpR |bool   |is_utf8_posix_digit    |NN const U8 *p
+AbDMpR |bool   |is_utf8_graph  |NN const U8 *p
+AbDMpR |bool   |is_utf8_upper  |NN const U8 *p
+AbDMpR |bool   |is_utf8_lower  |NN const U8 *p
+AbDMpR |bool   |is_utf8_print  |NN const U8 *p
+AbDMpR |bool   |is_utf8_punct  |NN const U8 *p
+AbDMpR |bool   |is_utf8_xdigit |NN const U8 *p
 AMpR   |bool   |_is_utf8_mark  |NN const U8 *p
-ADMpR  |bool   |is_utf8_mark   |NN const U8 *p
-EXdpR  |bool   |isSCRIPT_RUN   |NN const U8 *s|NN const U8 *send    \
+AbDMpR |bool   |is_utf8_mark   |NN const U8 *p
+#if defined(PERL_CORE) || defined(PERL_EXT)
+EXdpR  |bool   |isSCRIPT_RUN   |NN const U8 *s|NN const U8 *send   \
                                |const bool utf8_target
+#endif
 : Used in perly.y
 p      |OP*    |jmaybe         |NN OP *o
 : Used in pp.c 
@@ -941,9 +953,7 @@ Ap  |void   |op_refcnt_lock
 Ap     |void   |op_refcnt_unlock
 Apdn   |OP*    |op_sibling_splice|NULLOK OP *parent|NULLOK OP *start \
                |int del_count|NULLOK OP* insert
-#ifdef PERL_OP_PARENT
 Apdn   |OP*    |op_parent|NN OP *o
-#endif
 #if defined(PERL_IN_OP_C)
 s      |OP*    |listkids       |NULLOK OP* o
 #endif
@@ -1025,6 +1035,7 @@ p |int    |magic_freearylen_p|NN SV* sv|NN MAGIC* mg
 p      |int    |magic_setdbline|NN SV* sv|NN MAGIC* mg
 p      |int    |magic_setdebugvar|NN SV* sv|NN MAGIC* mg
 p      |int    |magic_setdefelem|NN SV* sv|NN MAGIC* mg
+p      |int    |magic_setnonelem|NN SV* sv|NN MAGIC* mg
 p      |int    |magic_setenv   |NN SV* sv|NN MAGIC* mg
 dp     |int    |magic_sethint  |NN SV* sv|NN MAGIC* mg
 p      |int    |magic_setisa   |NN SV* sv|NN MAGIC* mg
@@ -1099,6 +1110,7 @@ s |void   |move_proto_attr|NN OP **proto|NN OP **attrs \
 p      |int    |mode_from_discipline|NULLOK const char* s|STRLEN len
 Ap     |const char*    |moreswitches   |NN const char* s
 Ap     |NV     |my_atof        |NN const char *s
+AnpR   |NV     |my_strtod      |NN const char * const s|NULLOK char ** e
 Apr    |void   |my_exit        |U32 status
 Apr    |void   |my_failure_exit
 Ap     |I32    |my_fflush_all
@@ -1198,7 +1210,9 @@ ApdR      |SV*    |newSVpv_share  |NULLOK const char* s|U32 hash
 AfpdR  |SV*    |newSVpvf       |NN const char *const pat|...
 ApR    |SV*    |vnewSVpvf      |NN const char *const pat|NULLOK va_list *const args
 Apd    |SV*    |newSVrv        |NN SV *const rv|NULLOK const char *const classname
-ApdR   |SV*    |newSVsv        |NULLOK SV *const old
+ApmbdR |SV*    |newSVsv        |NULLOK SV *const old
+ApmdR  |SV*    |newSVsv_nomg   |NULLOK SV *const old
+ApR    |SV*    |newSVsv_flags  |NULLOK SV *const old|I32 flags
 ApdR   |SV*    |newSV_type     |const svtype type
 ApdR   |OP*    |newUNOP        |I32 type|I32 flags|NULLOK OP* first
 ApdR   |OP*    |newUNOP_AUX    |I32 type|I32 flags|NULLOK OP* first \
@@ -1295,23 +1309,25 @@ ApdO    |AV*    |get_av         |NN const char *name|I32 flags
 ApdO   |HV*    |get_hv         |NN const char *name|I32 flags
 ApdO   |CV*    |get_cv         |NN const char* name|I32 flags
 Apd    |CV*    |get_cvn_flags  |NN const char* name|STRLEN len|I32 flags
-EXnpo  |char*  |setlocale      |int category|NULLOK const char* locale
+Ando   |const char*|Perl_setlocale|const int category|NULLOK const char* locale
 #if defined(HAS_NL_LANGINFO) && defined(PERL_LANGINFO_H)
 Ando   |const char*|Perl_langinfo|const nl_item item
 #else
 Ando   |const char*|Perl_langinfo|const int item
 #endif
 ApOM   |int    |init_i18nl10n  |int printwarn
-ApOM   |int    |init_i18nl14n  |int printwarn
+AbpOM  |int    |init_i18nl14n  |int printwarn
 p      |char*  |my_strerror    |const int errnum
 Xpn    |void   |_warn_problematic_locale
-p      |void   |new_numeric    |NULLOK const char* newcoll
 Xp     |void   |set_numeric_underlying
 Xp     |void   |set_numeric_standard
 Xp     |bool   |_is_in_locale_category|const bool compiling|const int category
-Apd    |void   |sync_locale
+Apdn   |void   |switch_to_global_locale
+Apdn   |bool   |sync_locale
+ApMn   |void   |thread_locale_init
+ApMn   |void   |thread_locale_term
 ApdO   |void   |require_pv     |NN const char* pv
-Apd    |void   |pack_cat       |NN SV *cat|NN const char *pat|NN const char *patend \
+Abpd   |void   |pack_cat       |NN SV *cat|NN const char *pat|NN const char *patend \
                                |NN SV **beglist|NN SV **endlist|NN SV ***next_in_list|U32 flags
 Apd    |void   |packlist       |NN SV *cat|NN const char *pat|NN const char *patend|NN SV **beglist|NN SV **endlist
 #if defined(PERL_USES_PL_PIDSTATUS) && defined(PERL_IN_UTIL_C)
@@ -1330,9 +1346,6 @@ Apmb      |OP*    |ref            |NULLOK OP* o|I32 type
 s      |OP*    |refkids        |NULLOK OP* o|I32 type
 #endif
 Ap     |void   |regdump        |NN const regexp* r
-ApM    |SV*    |regclass_swash |NULLOK const regexp *prog \
-                               |NN const struct regnode *node|bool doinit \
-                               |NULLOK SV **listsvp|NULLOK SV **altsvp
 #if defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_PERL_C) || defined(PERL_IN_UTF8_C)
 EXpR   |SV*    |_new_invlist_C_array|NN const UV* const list
 EXMp   |bool   |_invlistEQ     |NN SV* const a|NN SV* const b|const bool complement_b
@@ -1355,7 +1368,7 @@ p |REGEXP*|re_op_compile  |NULLOK SV ** const patternp \
                                |NN const regexp_engine* eng \
                                |NULLOK REGEXP *old_re \
                                |NULLOK bool *is_bare_re \
-                               |U32 rx_flags|U32 pm_flags
+                               |const U32 rx_flags|const U32 pm_flags
 Ap     |REGEXP*|re_compile     |NN SV * const pattern|U32 orig_rx_flags
 Ap     |char*  |re_intuit_start|NN REGEXP * const rx \
                                |NULLOK SV* sv \
@@ -1453,10 +1466,10 @@ Ap      |void   |save_I8        |NN I8* bytep
 Ap     |void   |save_int       |NN int* intp
 Ap     |void   |save_item      |NN SV* item
 Ap     |void   |save_iv        |NN IV *ivp
-A    |void   |save_list      |NN SV** sarg|I32 maxsarg
-A    |void   |save_long      |NN long* longp
+Abp    |void   |save_list      |NN SV** sarg|I32 maxsarg
+Abp    |void   |save_long      |NN long* longp
 Apmb   |void   |save_mortalizesv|NN SV* sv
-A    |void   |save_nogv      |NN GV* gv
+Abp    |void   |save_nogv      |NN GV* gv
 : Used in SAVEFREOP(), used in gv.c, op.c, perl.c, pp_ctl.c, pp_sort.c
 Apmb   |void   |save_op
 Ap     |SV*    |save_scalar    |NN GV* gv
@@ -1507,9 +1520,10 @@ Anp      |Signal_t |csighandler  |int sig
 #endif
 Ap     |SV**   |stack_grow     |NN SV** sp|NN SV** p|SSize_t n
 Ap     |I32    |start_subparse |I32 is_format|U32 flags
+Xp     |void   |init_named_cv  |NN CV *cv|NN OP *nameop
 : Used in pp_ctl.c
 p      |void   |sub_crush_depth|NN CV* cv
-Amd    |bool   |sv_2bool       |NN SV *const sv
+Apbmd  |bool   |sv_2bool       |NN SV *const sv
 Apd    |bool   |sv_2bool_flags |NN SV *sv|I32 flags
 Apd    |CV*    |sv_2cv         |NULLOK SV* sv|NN HV **const st|NN GV **const gvp \
                                |const I32 lref
@@ -1527,15 +1541,15 @@ Apmb    |char*  |sv_2pv         |NN SV *sv|NULLOK STRLEN *lp
 Apd    |char*  |sv_2pv_flags   |NN SV *const sv|NULLOK STRLEN *const lp|const I32 flags
 Apd    |char*  |sv_2pvutf8     |NN SV *sv|NULLOK STRLEN *const lp
 Apd    |char*  |sv_2pvbyte     |NN SV *sv|NULLOK STRLEN *const lp
-A    |char*  |sv_pvn_nomg    |NN SV* sv|NULLOK STRLEN* lp
+Abp    |char*  |sv_pvn_nomg    |NN SV* sv|NULLOK STRLEN* lp
 Apmb   |UV     |sv_2uv         |NN SV *sv
 Apd    |UV     |sv_2uv_flags   |NN SV *const sv|const I32 flags
-Apd    |IV     |sv_iv          |NN SV* sv
-Apd    |UV     |sv_uv          |NN SV* sv
-Apd    |NV     |sv_nv          |NN SV* sv
-Apd    |char*  |sv_pvn         |NN SV *sv|NN STRLEN *lp
-Apd    |char*  |sv_pvutf8n     |NN SV *sv|NN STRLEN *lp
-Apd    |char*  |sv_pvbyten     |NN SV *sv|NN STRLEN *lp
+Abpd   |IV     |sv_iv          |NN SV* sv
+Abpd   |UV     |sv_uv          |NN SV* sv
+Abpd   |NV     |sv_nv          |NN SV* sv
+Abpd   |char*  |sv_pvn         |NN SV *sv|NN STRLEN *lp
+Abpd   |char*  |sv_pvutf8n     |NN SV *sv|NN STRLEN *lp
+Abpd   |char*  |sv_pvbyten     |NN SV *sv|NN STRLEN *lp
 Apd    |I32    |sv_true        |NULLOK SV *const sv
 #if defined(PERL_IN_SV_C)
 sd     |void   |sv_add_arena   |NN char *const ptr|const U32 size \
@@ -1571,7 +1585,7 @@ Aopd      |I32    |sv_cmp_locale  |NULLOK SV *const sv1|NULLOK SV *const sv2
 Apd    |I32    |sv_cmp_locale_flags    |NULLOK SV *const sv1 \
                                |NULLOK SV *const sv2|const U32 flags
 #if defined(USE_LOCALE_COLLATE)
-Amd    |char*  |sv_collxfrm    |NN SV *const sv|NN STRLEN *const nxp
+Apbmd  |char*  |sv_collxfrm    |NN SV *const sv|NN STRLEN *const nxp
 Apd    |char*  |sv_collxfrm_flags      |NN SV *const sv|NN STRLEN *const nxp|I32 const flags
 #endif
 Apd    |int    |getcwd_sv      |NN SV* sv
@@ -1588,7 +1602,7 @@ ApdR      |bool   |sv_does_sv     |NN SV* sv|NN SV* namesv|U32 flags
 ApdR   |bool   |sv_does_pv     |NN SV* sv|NN const char *const name|U32 flags
 ApdR   |bool   |sv_does_pvn    |NN SV* sv|NN const char *const name|const STRLEN len \
                                 |U32 flags
-Amd    |I32    |sv_eq          |NULLOK SV* sv1|NULLOK SV* sv2
+Apbmd  |I32    |sv_eq          |NULLOK SV* sv1|NULLOK SV* sv2
 Apd    |I32    |sv_eq_flags    |NULLOK SV* sv1|NULLOK SV* sv2|const U32 flags
 Apd    |void   |sv_free        |NULLOK SV *const sv
 poMX   |void   |sv_free2       |NN SV *const sv|const U32 refcnt
@@ -1683,7 +1697,6 @@ EXpRM     |SV*    |swash_init     |NN const char* pkg|NN const char* name|NN SV* listsv|I32
 EXpM   |UV     |swash_fetch    |NN SV *swash|NN const U8 *ptr|bool do_utf8
 #ifdef PERL_IN_REGCOMP_C
 EiMR   |SV*    |add_cp_to_invlist      |NULLOK SV* invlist|const UV cp
-EiM    |void   |invlist_set_len|NN SV* const invlist|const UV len|const bool offset
 EiMRn  |bool   |invlist_is_iterating|NN SV* const invlist
 #ifndef PERL_EXT_RE_BUILD
 EiMRn  |UV*    |_invlist_array_init    |NN SV* const invlist|const bool will_have_0
@@ -1692,12 +1705,13 @@ EsM     |void   |_append_range_to_invlist   |NN SV* const invlist|const UV start|const
 EsM    |void   |invlist_extend    |NN SV* const invlist|const UV len
 EsM    |void   |invlist_replace_list_destroys_src|NN SV *dest|NN SV *src
 EiMRn  |IV*    |get_invlist_previous_index_addr|NN SV* invlist
+EiM    |void   |invlist_set_len|NN SV* const invlist|const UV len|const bool offset
 EiMn   |void   |invlist_set_previous_index|NN SV* const invlist|const IV index
 EiMRn  |IV     |invlist_previous_index|NN SV* const invlist
 EiMn   |void   |invlist_trim   |NN SV* invlist
 EiM    |void   |invlist_clear  |NN SV* invlist
+sM     |void   |initialize_invlist_guts|NN SV* invlist|const Size_t initial_size
 #endif
-EiMR   |SV*    |invlist_clone  |NN SV* const invlist
 EiMRn  |STRLEN*|get_invlist_iter_addr  |NN SV* invlist
 EiMn   |void   |invlist_iterinit|NN SV* invlist
 EsMRn  |bool   |invlist_iternext|NN SV* invlist|NN UV* start|NN UV* end
@@ -1721,24 +1735,19 @@ EXpM    |void   |_invlist_union_maybe_complement_2nd        \
 EXmM   |void   |_invlist_subtract|NN SV* const a|NN SV* const b|NN SV** result
 EXpM   |void   |_invlist_invert|NN SV* const invlist
 EXMpR  |SV*    |_new_invlist   |IV initial_size
-EXMpR  |SV*    |_swash_to_invlist      |NN SV* const swash
 EXMpR  |SV*    |_add_range_to_invlist  |NULLOK SV* invlist|UV start|UV end
 EXMpR  |SV*    |_setup_canned_invlist|const STRLEN size|const UV element0|NN UV** other_elements_ptr
-EXMpn  |void   |_invlist_populate_swatch   |NN SV* const invlist|const UV start|const UV end|NN U8* swatch
 #endif
-#if defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_REGEXEC_C) || defined(PERL_IN_UTF8_C) || defined(PERL_IN_TOKE_C)
-EXp    |SV*    |_core_swash_init|NN const char* pkg|NN const char* name \
-               |NN SV* listsv|I32 minbits|I32 none \
-               |NULLOK SV* invlist|NULLOK U8* const flags_p
+#if defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_SV_C)
+EMpX   |SV*    |invlist_clone  |NN SV* const invlist|NULLOK SV* newlist
 #endif
-#if defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_REGEXEC_C) || defined(PERL_IN_UTF8_C)
+#if defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_REGEXEC_C) || defined(PERL_IN_TOKE_C) || defined(PERL_IN_UTF8_C) || defined(PERL_IN_PP_C)
 EiMRn  |UV*    |invlist_array  |NN SV* const invlist
+EiMRn  |bool   |is_invlist     |NULLOK SV* const invlist
 EiMRn  |bool*  |get_invlist_offset_addr|NN SV* invlist
 EiMRn  |UV     |_invlist_len   |NN SV* const invlist
 EMiRn  |bool   |_invlist_contains_cp|NN SV* const invlist|const UV cp
 EXpMRn |SSize_t|_invlist_search        |NN SV* const invlist|const UV cp
-EXMpR  |SV*    |_get_swash_invlist|NN SV* const swash
-EXMpR  |HV*    |_swash_inversion_hash  |NN SV* const swash
 #endif
 #if defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_REGEXEC_C)
 EXpM   |SV*    |_get_regclass_nonbitmap_data                              \
@@ -1748,7 +1757,6 @@ EXpM      |SV*    |_get_regclass_nonbitmap_data                              \
                                |NULLOK SV **listsvp                       \
                                |NULLOK SV **lonly_utf8_locale             \
                                |NULLOK SV **output_invlist
-EXp    |void|_load_PL_utf8_foldclosures|
 #endif
 #if defined(PERL_IN_REGCOMP_C) || defined (PERL_IN_DUMP_C)
 EXMp   |void   |_invlist_dump  |NN PerlIO *file|I32 level   \
@@ -1787,12 +1795,17 @@ s       |U32    |check_and_deprecate                                        \
                                |NN const char * const file                 \
                                |const unsigned line
 s      |UV     |_to_utf8_case  |const UV uv1                                   \
-                               |NN const U8 *p                                 \
+                               |NULLOK const U8 *p                             \
                                |NN U8* ustrp                                   \
-                               |NULLOK STRLEN *lenp                            \
-                               |NN SV **swashp                                 \
-                               |NN const char *normal                          \
-                               |NULLOK const char *special
+                               |NN STRLEN *lenp                                \
+                               |NN SV *invlist                                 \
+                               |NN const int * const invmap                    \
+                               |NULLOK const unsigned int * const * const aux_tables   \
+                               |NULLOK const U8 * const aux_table_lengths      \
+                               |NN const char * const normal
+s      |UV     |turkic_fc      |NN const U8 * const p |NN const U8 * const e|NN U8* ustrp|NN STRLEN *lenp
+s      |UV     |turkic_lc      |NN const U8 * const p0|NN const U8 * const e|NN U8* ustrp|NN STRLEN *lenp
+s      |UV     |turkic_uc      |NN const U8 * const p |NN const U8 * const e|NN U8* ustrp|NN STRLEN *lenp
 #endif
 ApbmdD |UV     |to_utf8_lower  |NN const U8 *p|NN U8* ustrp|NULLOK STRLEN *lenp
 AMp    |UV     |_to_utf8_lower_flags|NN const U8 *p|NULLOK const U8* e         \
@@ -1819,7 +1832,7 @@ pn        |bool   |translate_substr_offsets|STRLEN curlen|IV pos1_iv \
 #if defined(UNLINK_ALL_VERSIONS)
 Ap     |I32    |unlnk          |NN const char* f
 #endif
-Apd    |SSize_t|unpack_str     |NN const char *pat|NN const char *patend|NN const char *s \
+Abpd   |SSize_t|unpack_str     |NN const char *pat|NN const char *patend|NN const char *s \
                                |NULLOK const char *strbeg|NN const char *strend|NULLOK char **new_s \
                                |I32 ocnt|U32 flags
 Apd    |SSize_t|unpackstring   |NN const char *pat|NN const char *patend|NN const char *s \
@@ -1850,31 +1863,49 @@ AMnp    |U8*    |bytes_from_utf8_loc|NN const U8 *s                         \
                                    |NULLOK const U8 ** first_unconverted
 ApMd   |U8*    |bytes_to_utf8  |NN const U8 *s|NN STRLEN *lenp
 ApdD   |UV     |utf8_to_uvchr  |NN const U8 *s|NULLOK STRLEN *retlen
-ApdD   |UV     |utf8_to_uvuni  |NN const U8 *s|NULLOK STRLEN *retlen
-ApMD   |UV     |valid_utf8_to_uvuni    |NN const U8 *s|NULLOK STRLEN *retlen
+AbpdD  |UV     |utf8_to_uvuni  |NN const U8 *s|NULLOK STRLEN *retlen
+AbpMD  |UV     |valid_utf8_to_uvuni    |NN const U8 *s|NULLOK STRLEN *retlen
 Aopd   |UV     |utf8_to_uvchr_buf      |NN const U8 *s|NN const U8 *send|NULLOK STRLEN *retlen
 ApdD   |UV     |utf8_to_uvuni_buf      |NN const U8 *s|NN const U8 *send|NULLOK STRLEN *retlen
 pM     |bool   |check_utf8_print       |NN const U8 *s|const STRLEN len
 
-Adop   |UV     |utf8n_to_uvchr |NN const U8 *s                             \
+Adnop  |UV     |utf8n_to_uvchr |NN const U8 *s                             \
                                |STRLEN curlen                              \
                                |NULLOK STRLEN *retlen                      \
                                |const U32 flags
-Adp    |UV     |utf8n_to_uvchr_error|NN const U8 *s                        \
+Adnop  |UV     |utf8n_to_uvchr_error|NN const U8 *s                        \
                                |STRLEN curlen                              \
                                |NULLOK STRLEN *retlen                      \
                                |const U32 flags                            \
                                |NULLOK U32 * errors
+AMndi  |UV     |utf8n_to_uvchr_msgs|NN const U8 *s                         \
+                               |STRLEN curlen                              \
+                               |NULLOK STRLEN *retlen                      \
+                               |const U32 flags                            \
+                               |NULLOK U32 * errors                        \
+                               |NULLOK AV ** msgs
+AMnp   |UV     |_utf8n_to_uvchr_msgs_helper                                \
+                               |NN const U8 *s                             \
+                               |STRLEN curlen                              \
+                               |NULLOK STRLEN *retlen                      \
+                               |const U32 flags                            \
+                               |NULLOK U32 * errors                        \
+                               |NULLOK AV ** msgs
 AipnR  |UV     |valid_utf8_to_uvchr    |NN const U8 *s|NULLOK STRLEN *retlen
 Ap     |UV     |utf8n_to_uvuni|NN const U8 *s|STRLEN curlen|NULLOK STRLEN *retlen|U32 flags
 
 Adm    |U8*    |uvchr_to_utf8  |NN U8 *d|UV uv
 Ap     |U8*    |uvuni_to_utf8  |NN U8 *d|UV uv
 Adm    |U8*    |uvchr_to_utf8_flags    |NN U8 *d|UV uv|UV flags
-Apd    |U8*    |uvoffuni_to_utf8_flags |NN U8 *d|UV uv|const UV flags
+AdmM   |U8*    |uvchr_to_utf8_flags_msgs|NN U8 *d|UV uv|UV flags|NULLOK HV ** msgs
+Apod   |U8*    |uvoffuni_to_utf8_flags |NN U8 *d|UV uv|const UV flags
+ApM    |U8*    |uvoffuni_to_utf8_flags_msgs|NN U8 *d|UV uv|const UV flags|NULLOK HV** msgs
 Ap     |U8*    |uvuni_to_utf8_flags    |NN U8 *d|UV uv|UV flags
 Apd    |char*  |pv_uni_display |NN SV *dsv|NN const U8 *spv|STRLEN len|STRLEN pvlim|UV flags
 ApdR   |char*  |sv_uni_display |NN SV *dsv|NN SV *ssv|STRLEN pvlim|UV flags
+EXpR   |Size_t |_inverse_folds |const UV cp                                \
+                               |NN unsigned int * first_folds_to           \
+                               |NN const unsigned int ** remaining_folds_to
 : Used by Data::Alias
 EXp    |void   |vivify_defelem |NN SV* sv
 : Used in pp.c
@@ -2015,9 +2046,9 @@ ApmdbR    |char*  |sv_pvutf8      |NN SV *sv
 ApmdbR |char*  |sv_pvbyte      |NN SV *sv
 Apmdb  |STRLEN |sv_utf8_upgrade|NN SV *sv
 Amd    |STRLEN |sv_utf8_upgrade_nomg|NN SV *sv
-ApdM   |bool   |sv_utf8_downgrade|NN SV *const sv|const bool fail_ok
+Apd    |bool   |sv_utf8_downgrade|NN SV *const sv|const bool fail_ok
 Apd    |void   |sv_utf8_encode |NN SV *const sv
-ApdM   |bool   |sv_utf8_decode |NN SV *const sv
+Apd    |bool   |sv_utf8_decode |NN SV *const sv
 Apdmb  |void   |sv_force_normal|NN SV *sv
 Apd    |void   |sv_force_normal_flags|NN SV *const sv|const U32 flags
 pX     |SSize_t|tmps_grow_p    |SSize_t ix
@@ -2077,8 +2108,8 @@ Ap        |void   |sys_intern_dup |NN struct interp_intern* src|NN struct interp_intern*
 #endif
 
 Amop   |const XOP *    |custom_op_xop  |NN const OP *o
-ApR    |const char *   |custom_op_name |NN const OP *o
-ApR    |const char *   |custom_op_desc |NN const OP *o
+AbpR   |const char *   |custom_op_name |NN const OP *o
+AbpR   |const char *   |custom_op_desc |NN const OP *o
 pRX    |XOPRETANY      |custom_op_get_field    |NN const OP *o|const xop_flags_enum field
 Aop    |void   |custom_op_register     |NN Perl_ppaddr_t ppaddr \
                        |NN const XOP *xop
@@ -2241,6 +2272,7 @@ sR        |SV*    |refto          |NN SV* sv
 : Used in pp_hot.c
 pRxo   |GV*    |softref2xv     |NN SV *const sv|NN const char *const what \
                                |const svtype type|NN SV ***spp
+inR    |bool   |lossless_NV_to_IV|const NV nv|NN IV * ivp
 #endif
 
 #if defined(PERL_IN_PP_PACK_C)
@@ -2326,55 +2358,53 @@ Ep      |void   |regprop        |NULLOK const regexp *prog|NN SV* sv|NN const regnode* o|NULLO
 Ep     |int    |re_printf      |NN const char *fmt|...
 #endif
 #if defined(PERL_IN_REGCOMP_C)
-Es     |regnode*|reg           |NN RExC_state_t *pRExC_state \
+Es     |regnode_offset|reg     |NN RExC_state_t *pRExC_state \
                                |I32 paren|NN I32 *flagp|U32 depth
-Es     |regnode*|regnode_guts  |NN RExC_state_t *pRExC_state              \
+Es     |regnode_offset|regnode_guts|NN RExC_state_t *pRExC_state          \
                                |const U8 op                               \
                                |const STRLEN extra_len                    \
                                |NN const char* const name
-Es     |regnode*|reganode      |NN RExC_state_t *pRExC_state|U8 op \
+Es     |void   |change_engine_size|NN RExC_state_t *pRExC_state|const Ptrdiff_t size
+Es     |regnode_offset|reganode|NN RExC_state_t *pRExC_state|U8 op \
                                |U32 arg
-Es     |regnode*|reg2Lanode    |NN RExC_state_t *pRExC_state              \
+Es     |regnode_offset|reg2Lanode|NN RExC_state_t *pRExC_state            \
                                |const U8 op                               \
                                |const U32 arg1                            \
                                |const I32 arg2
-Es     |regnode*|regatom       |NN RExC_state_t *pRExC_state \
+Es     |regnode_offset|regatom |NN RExC_state_t *pRExC_state \
                                |NN I32 *flagp|U32 depth
-Es     |regnode*|regbranch     |NN RExC_state_t *pRExC_state \
+Es     |regnode_offset|regbranch       |NN RExC_state_t *pRExC_state \
                                |NN I32 *flagp|I32 first|U32 depth
 Es     |void    |set_ANYOF_arg |NN RExC_state_t* const pRExC_state \
                                |NN regnode* const node                    \
                                |NULLOK SV* const cp_list                  \
-                               |NULLOK SV* const runtime_defns            \
-                               |NULLOK SV* const only_utf8_locale_list    \
-                               |NULLOK SV* const swash                    \
-                               |const bool has_user_defined_property
-Es     |void   |output_or_return_posix_warnings                            \
+                               |NULLOK SV* const runtime_defns            \
+                               |NULLOK SV* const only_utf8_locale_list
+Es     |void   |output_posix_warnings                                      \
                                |NN RExC_state_t *pRExC_state               \
-                               |NN AV* posix_warnings                      \
-                               |NULLOK AV** return_posix_warnings
+                               |NN AV* posix_warnings
 Es     |AV*     |add_multi_match|NULLOK AV* multi_char_matches             \
                                |NN SV* multi_string                        \
                                |const STRLEN cp_count
-Es     |regnode*|regclass      |NN RExC_state_t *pRExC_state                 \
+Es     |regnode_offset|regclass|NN RExC_state_t *pRExC_state                 \
                                |NN I32 *flagp|U32 depth|const bool stop_at_1 \
                                |bool allow_multi_fold                        \
                                |const bool silence_non_portable              \
                                |const bool strict                            \
                                |bool optimizable                             \
-                               |NULLOK SV** ret_invlist                      \
-                               |NULLOK AV** return_posix_warnings
+                               |NULLOK SV** ret_invlist
 Es     |void|add_above_Latin1_folds|NN RExC_state_t *pRExC_state|const U8 cp \
                                |NN SV** invlist
-Ei     |regnode*|handle_named_backref|NN RExC_state_t *pRExC_state         \
+Ei     |regnode_offset|handle_named_backref|NN RExC_state_t *pRExC_state   \
                                |NN I32 *flagp                              \
                                |NN char * parse_start                      \
                                |char ch
 EsnR   |unsigned int|regex_set_precedence|const U8 my_operator
-Es     |regnode*|handle_regex_sets|NN RExC_state_t *pRExC_state \
+Es     |regnode_offset|handle_regex_sets|NN RExC_state_t *pRExC_state \
                                |NULLOK SV ** return_invlist            \
                                |NN I32 *flagp|U32 depth                \
                                |NN char * const oregcomp_parse
+Es     |void   |set_regex_pv   |NN RExC_state_t *pRExC_state|NN REGEXP *Rx
 #if defined(DEBUGGING) && defined(ENABLE_REGEX_SETS_DEBUGGING)
 Es     |void   |dump_regex_sets_structures                                 \
                                |NN RExC_state_t *pRExC_state               \
@@ -2382,21 +2412,23 @@ Es      |void   |dump_regex_sets_structures                                 \
                                |const IV fence|NN AV * fence_stack
 #endif
 Es     |void|parse_lparen_question_flags|NN RExC_state_t *pRExC_state
-Es     |regnode*|reg_node      |NN RExC_state_t *pRExC_state|U8 op
-Es     |regnode*|regpiece      |NN RExC_state_t *pRExC_state \
+Es     |regnode_offset|reg_node|NN RExC_state_t *pRExC_state|U8 op
+Es     |regnode_offset|regpiece|NN RExC_state_t *pRExC_state \
                                |NN I32 *flagp|U32 depth
 Es     |bool   |grok_bslash_N  |NN RExC_state_t *pRExC_state               \
-                               |NULLOK regnode** nodep                     \
+                               |NULLOK regnode_offset* nodep               \
                                |NULLOK UV *code_point_p                    \
                                |NULLOK int* cp_count                       \
                                |NN I32 *flagp                              \
                                |const bool strict                          \
                                |const U32 depth
 Es     |void   |reginsert      |NN RExC_state_t *pRExC_state \
-                               |U8 op|NN regnode *operand|U32 depth
-Es     |void   |regtail        |NN RExC_state_t * pRExC_state              \
-                               |NN const regnode * const p                 \
-                               |NN const regnode * const val               \
+                               |const U8 op                                \
+                               |const regnode_offset operand               \
+                               |const U32 depth
+Es     |bool   |regtail        |NN RExC_state_t * pRExC_state              \
+                               |NN const regnode_offset p                  \
+                               |NN const regnode_offset val                \
                                |const U32 depth
 Es     |SV *   |reg_scan_name  |NN RExC_state_t *pRExC_state \
                                |U32 flags
@@ -2404,9 +2436,6 @@ Es        |U32    |join_exact     |NN RExC_state_t *pRExC_state \
                                |NN regnode *scan|NN UV *min_subtract  \
                                |NN bool *unfolded_multi_char          \
                                |U32 flags|NULLOK regnode *val|U32 depth
-Ei     |void   |alloc_maybe_populate_EXACT|NN RExC_state_t *pRExC_state \
-                               |NN regnode *node|NN I32 *flagp|STRLEN len \
-                               |UV code_point|bool downgradable
 Ein    |U8   |compute_EXACTish|NN RExC_state_t *pRExC_state
 Es     |void   |nextchar       |NN RExC_state_t *pRExC_state
 Es     |void   |skip_to_be_ignored_text|NN RExC_state_t *pRExC_state  \
@@ -2453,6 +2482,7 @@ Es        |SSize_t|study_chunk    |NN RExC_state_t *pRExC_state \
                                 |I32 stopparen|U32 recursed_depth \
                                |NULLOK regnode_ssc *and_withp \
                                |U32 flags|U32 depth
+EsR    |SV *   |get_ANYOFM_contents|NN const regnode * n
 EsRn   |U32    |add_data       |NN RExC_state_t* const pRExC_state \
                                |NN const char* const s|const U32 n
 rs     |void   |re_croak2      |bool utf8|NN const char* pat1|NN const char* pat2|...
@@ -2474,6 +2504,25 @@ EnsR     |int    |edit_distance  |NN const UV *src                   \
                                |const STRLEN x                     \
                                |const STRLEN y                     \
                                |const SSize_t maxDistance
+EpX    |SV *   |parse_uniprop_string|NN const char * const name            \
+                                    |const Size_t name_len                 \
+                                    |const bool is_utf8                    \
+                                    |const bool to_fold                    \
+                                    |const bool runtime                    \
+                                    |const bool deferrable                 \
+                                    |NN bool * user_defined_ptr            \
+                                    |NN SV * msg                           \
+                                    |const STRLEN level
+EXp    |SV *   |handle_user_defined_property|NN const char * name          \
+                                            |const STRLEN name_len         \
+                                            |const bool is_utf8            \
+                                            |const bool to_fold            \
+                                            |const bool runtime            \
+                                            |const bool deferrable         \
+                                            |NN SV* contents               \
+                                            |NN bool *user_defined_ptr     \
+                                            |NN SV * msg                   \
+                                            |const STRLEN level
 #  ifdef DEBUGGING
 Ep     |int    |re_indentf     |NN const char *fmt|U32 depth|...
 Es     |void        |regdump_intflags|NULLOK const char *lead| const U32 flags
@@ -2485,7 +2534,7 @@ Es        |const regnode*|dumpuntil|NN const regexp *r|NN const regnode *start \
                                |NN SV* sv|I32 indent|U32 depth
 Es     |void   |put_code_point |NN SV* sv|UV c
 Es     |bool   |put_charclass_bitmap_innards|NN SV* sv             \
-                               |NN char* bitmap                    \
+                               |NULLOK char* bitmap                \
                                |NULLOK SV* nonbitmap_invlist       \
                                |NULLOK SV* only_utf8_locale_invlist\
                                |NULLOK const regnode * const node  \
@@ -2511,8 +2560,8 @@ Es        |void   |dump_trie_interim_list|NN const struct _reg_trie_data *trie\
 Es     |void   |dump_trie_interim_table|NN const struct _reg_trie_data *trie\
                                |NULLOK HV* widecharmap|NN AV *revcharmap\
                                |U32 next_alloc|U32 depth
-Es     |U8     |regtail_study  |NN RExC_state_t *pRExC_state \
-                               |NN regnode *p|NN const regnode *val|U32 depth
+Es     |bool   |regtail_study  |NN RExC_state_t *pRExC_state \
+                               |NN regnode_offset p|NN const regnode_offset val|U32 depth
 #  endif
 #endif
 
@@ -2525,12 +2574,17 @@ ERp     |bool   |_is_grapheme   |NN const U8 * strbeg|NN const U8 * s|NN const U8 *stren
 #endif
 
 #if defined(PERL_IN_REGEXEC_C)
-ERs    |bool   |isFOO_utf8_lc  |const U8 classnum|NN const U8* character
-ERns   |char *|find_next_ascii|NN char* s|NN const char * send|const bool is_utf8
-ERns   |char *|find_next_non_ascii|NN char* s|NN const char * send|const bool is_utf8
+ERs    |bool   |isFOO_utf8_lc  |const U8 classnum|NN const U8* character|NN const U8* e
+ERns   |U8 *   |find_next_masked|NN U8 * s                             \
+                                |NN const U8 * send                    \
+                                |const U8 byte|const U8 mask
+ERns   |U8 *|find_span_end     |NN U8* s|NN const U8 * send|const U8 span_byte
+ERns   |U8 *|find_span_end_mask|NN U8 * s|NN const U8 * send   \
+                               |const U8 span_byte|const U8 mask
 ERs    |SSize_t|regmatch       |NN regmatch_info *reginfo|NN char *startpos|NN regnode *prog
 WERs   |I32    |regrepeat      |NN regexp *prog|NN char **startposp \
                                |NN const regnode *p \
+                               |NN char *loceol                \
                                |NN regmatch_info *const reginfo \
                                |I32 max
 ERs    |bool   |regtry         |NN regmatch_info *reginfo|NN char **startposp
@@ -2601,6 +2655,7 @@ EsR       |WB_enum|backup_one_WB  |NN WB_enum * previous                  \
                                |NN const U8 * const strbeg                     \
                                |NN U8 ** curpos                                \
                                |const bool utf8_target
+Ein    |I32    |foldEQ_latin1_s2_folded|NN const char* a|NN const char* b|I32 len
 #  ifdef DEBUGGING
 Es     |void   |dump_exec_pos  |NN const char *locinput|NN const regnode *scan|NN const char *loc_regeol\
                                |NN const char *loc_bostr|NN const char *loc_reg_starttry|const bool do_utf8|const U32 depth
@@ -2641,7 +2696,7 @@ pR        |SV *   |varname        |NULLOK const GV *const gv|const char gvtype \
 
 pX     |void   |sv_del_backref |NN SV *const tsv|NN SV *const sv
 #if defined(PERL_IN_SV_C)
-nsR    |char * |uiv_2buf       |NN char *const buf|const IV iv|UV uv|const int is_uv|NN char **const peob
+niR    |char * |uiv_2buf       |NN char *const buf|const IV iv|UV uv|const int is_uv|NN char **const peob
 i      |void   |sv_unglob      |NN SV *const sv|U32 flags
 s      |const char *|sv_display        |NN SV *const sv|NN char *tmpbuf|STRLEN tmpbuf_size
 s      |void   |not_a_number   |NN SV *const sv
@@ -2686,7 +2741,18 @@ s        |void   |anonymise_cv_maybe     |NN GV *gv|NN CV *cv
 : Used in sv.c and hv.c
 po     |void * |more_bodies    |const svtype sv_type|const size_t body_size \
                                |const size_t arena_size
+EXpR   |SV*    |get_and_check_backslash_N_name|NN const char* s        \
+                               |NN const char* const e                 \
+                               |const bool is_utf8                     \
+                               |NN const char** error_msg
 
+: For use ONLY in B::Hooks::Parser, by special dispensation
+EXpMR  |char*  |scan_str       |NN char *start|int keep_quoted \
+                               |int keep_delims|int re_reparse \
+                               |NULLOK char **delimp
+EXpM   |char*  |scan_word      |NN char *s|NN char *dest|STRLEN destlen \
+                               |int allow_package|NN STRLEN *slp
+EXpMR  |char*  |skipspace_flags|NN char *s|U32 flags
 #if defined(PERL_IN_TOKE_C)
 s      |void   |check_uni
 s      |void   |force_next     |I32 type
@@ -2696,7 +2762,7 @@ s |char*  |force_word     |NN char *start|int token|int check_keyword \
                                |int allow_pack
 s      |SV*    |tokeq          |NN SV *sv
 sR     |char*  |scan_const     |NN char *start
-sR     |SV*    |get_and_check_backslash_N_name|NN const char* s \
+sR     |SV*    |get_and_check_backslash_N_name_wrapper|NN const char* s \
                                |NN const char* const e
 sR     |char*  |scan_formline  |NN char *s
 sR     |char*  |scan_heredoc   |NN char *s
@@ -2704,16 +2770,10 @@ s       |char*  |scan_ident     |NN char *s|NN char *dest       \
                                |STRLEN destlen|I32 ck_uni
 sR     |char*  |scan_inputsymbol|NN char *start
 sR     |char*  |scan_pat       |NN char *start|I32 type
-sR     |char*  |scan_str       |NN char *start|int keep_quoted \
-                               |int keep_delims|int re_reparse \
-                               |NULLOK char **delimp
 sR     |char*  |scan_subst     |NN char *start
 sR     |char*  |scan_trans     |NN char *start
-s      |char*  |scan_word      |NN char *s|NN char *dest|STRLEN destlen \
-                               |int allow_package|NN STRLEN *slp
 s      |void   |update_debugger_info|NULLOK SV *orig_sv \
                                |NULLOK const char *const buf|STRLEN len
-sR     |char*  |skipspace_flags|NN char *s|U32 flags
 sR     |char*  |swallow_bom    |NN U8 *s
 #ifndef PERL_NO_UTF16_FILTER
 s      |I32    |utf16_textfilter|int idx|NN SV *sv|int maxlen
@@ -2736,10 +2796,11 @@ sR      |I32    |sublex_start
 sR     |char * |filter_gets    |NN SV *sv|STRLEN append
 sR     |HV *   |find_in_my_stash|NN const char *pkgname|STRLEN len
 sR     |char * |tokenize_use   |int is_use|NN char *s
-so     |SV*    |new_constant   |NULLOK const char *s|STRLEN len \
+so     |SV*    |new_constant   |NULLOK const char *s|STRLEN len            \
                                |NN const char *key|STRLEN keylen|NN SV *sv \
-                               |NULLOK SV *pv|NULLOK const char *type \
-                               |STRLEN typelen
+                               |NULLOK SV *pv|NULLOK const char *type      \
+                               |STRLEN typelen                             \
+                               |NULLOK const char ** error_msg
 s      |int    |ao             |int toketype
 s      |void|parse_ident|NN char **s|NN char **d \
                      |NN char * const e|int allow_package \
@@ -2763,13 +2824,17 @@ s       |bool   |isa_lookup     |NN HV *stash|NN const char * const name \
 #endif
 
 #if defined(PERL_IN_LOCALE_C)
+#  ifdef USE_LOCALE
 sn     |const char*|category_name |const int category
+s      |const char*|switch_category_locale_to_template|const int switch_category|const int template_category|NULLOK const char * template_locale
+s      |void   |restore_switched_locale|const int category|NULLOK const char * const original_locale
+#  endif
 #  ifdef HAS_NL_LANGINFO
 sn     |const char*|my_nl_langinfo|const nl_item item|bool toggle
 #  else
 sn     |const char*|my_nl_langinfo|const int item|bool toggle
 #  endif
-in     |const char *|save_to_buffer|NN const char * string     \
+inR    |const char *|save_to_buffer|NULLOK const char * string \
                                    |NULLOK char **buf          \
                                    |NN Size_t *buf_size        \
                                    |const Size_t offset
@@ -2778,6 +2843,13 @@ s        |char*  |stdize_locale  |NN char* locs
 s      |void   |new_collate    |NULLOK const char* newcoll
 s      |void   |new_ctype      |NN const char* newctype
 s      |void   |set_numeric_radix|const bool use_locale
+s      |void   |new_numeric    |NULLOK const char* newnum
+#    ifdef USE_POSIX_2008_LOCALE
+sn     |const char*|emulate_setlocale|const int category               \
+                                   |NULLOK const char* locale          \
+                                   |unsigned int index                 \
+                                   |const bool is_index_valid
+#    endif
 #    ifdef WIN32
 s      |char*  |win32_setlocale|int category|NULLOK const char* locale
 #    endif
@@ -2800,7 +2872,8 @@ snR       |char * |setlocale_debug_string |const int category                 \
 #if        defined(USE_LOCALE)         \
     && (   defined(PERL_IN_LOCALE_C)   \
         || defined(PERL_IN_MG_C)       \
-       || defined (PERL_EXT_POSIX))
+       || defined (PERL_EXT_POSIX)     \
+       || defined (PERL_EXT_LANGINFO))
 ApM    |bool   |_is_cur_LC_category_utf8|int category
 #endif
 
@@ -2824,27 +2897,20 @@ pn      |Malloc_t       |mem_log_realloc        |const UV n|const UV typesize|NN const char *type_
 pn     |Malloc_t       |mem_log_free   |Malloc_t oldalloc|NN const char *filename|const int linenumber|NN const char *funcname
 #endif
 
-#if defined(PERL_IN_NUMERIC_C)
-#ifndef USE_QUADMATH
-sn     |NV|mulexp10    |NV value|I32 exponent
-#endif
-#endif
-
 #if defined(PERL_IN_UTF8_C)
+sR     |HV *   |new_msg_hv |NN const char * const message                  \
+                           |U32 categories                                 \
+                           |U32 flag
 sRM    |UV     |check_locale_boundary_crossing                             \
                |NN const U8* const p                                       \
                |const UV result                                            \
                |NN U8* const ustrp                                         \
                |NN STRLEN *lenp
 iR     |bool   |is_utf8_common |NN const U8 *const p                       \
-                               |NN SV **swash                              \
-                               |NN const char * const swashname            \
                                |NULLOK SV* const invlist
 iR     |bool   |is_utf8_common_with_len|NN const U8 *const p               \
-                                          |NN const U8 *const e            \
-                                   |NN SV **swash                          \
-                                   |NN const char * const swashname        \
-                                   |NULLOK SV* const invlist
+                                       |NN const U8 *const e               \
+                                       |NULLOK SV* const invlist
 sR     |SV*    |swatch_get     |NN SV* swash|UV start|UV span
 sRM    |U8*    |swash_scan_list_line|NN U8* l|NN U8* const lend|NN UV* min \
                |NN UV* max|NN UV* val|const bool wants_value               \
@@ -2866,7 +2932,8 @@ Apd       |char*  |sv_pvn_force_flags|NN SV *const sv|NULLOK STRLEN *const lp|const I32
 Apmb   |void   |sv_copypv      |NN SV *const dsv|NN SV *const ssv
 Apmd   |void   |sv_copypv_nomg |NN SV *const dsv|NN SV *const ssv
 Apd    |void   |sv_copypv_flags        |NN SV *const dsv|NN SV *const ssv|const I32 flags
-Ap     |char*  |my_atof2       |NN const char *s|NN NV* value
+Apo    |char*  |my_atof2       |NN const char *orig|NN NV* value
+Ap     |char*  |my_atof3       |NN const char *orig|NN NV* value|const STRLEN len
 Apn    |int    |my_socketpair  |int family|int type|int protocol|int fd[2]
 Apn    |int    |my_dirfd       |NULLOK DIR* dir
 #ifdef PERL_ANY_COW
@@ -3076,7 +3143,7 @@ px        |void   |my_clearenv
 Apo    |void*  |my_cxt_init    |NN const char *my_cxt_key|size_t size
 Apo    |int    |my_cxt_index   |NN const char *my_cxt_key
 #else
-Apo    |void*  |my_cxt_init    |NN int *index|size_t size
+Apo    |void*  |my_cxt_init    |NN int *indexp|size_t size
 #endif
 #endif
 #if defined(PERL_IN_UTIL_C)
@@ -3223,4 +3290,6 @@ XEop      |void   |dtrace_probe_op   |NN const OP *op
 XEop   |void   |dtrace_probe_phase|enum perl_phase phase
 #endif
 
+XEop   |STRLEN*|dup_warnings   |NULLOK STRLEN* warnings
+
 : ex: set ts=8 sts=4 sw=4 noet: