This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Avoid pointer churn in study_chunk recursion bitmap allocation
[perl5.git] / embed.fnc
index df387d1..3d90eeb 100644 (file)
--- a/embed.fnc
+++ b/embed.fnc
@@ -16,7 +16,7 @@
 :         any doc entry goes in perlapi.pod rather than perlintern.pod.  If no
 :           documentation is furnished for this function, and M is also
 :           specified, the function is not listed as part of the public API.
-:           If M isn't specified and no documentation is furnished, the
+:           If M isn't specified, and no documentation is furnished, the
 :           function is listed in perlapi as existing and being undocumented
 :         makes '#define foo Perl_foo' scope not just for PERL_CORE/PERL_EXT
 :
@@ -48,8 +48,9 @@
 :         in embed.h, change "#ifdef PERL_CORE"
 :         into               "#if defined(PERL_CORE) || defined(PERL_EXT)"
 :
-:      Should always be combined with "X" to be usable from dynamically
-:      loaded extensions.
+:      To be usable from dynamically loaded extensions, either:
+:        1) must be static to its containing file ("i" or "s" flag); or
+:         2) be combined with the "X" flag.
 :
 :   f  Function takes printf style format string, varargs (hence any entry that
 :      would otherwise go in embed.h is suppressed):
@@ -184,6 +185,9 @@ Anop        |Free_t |mfree          |Malloc_t where
 npR    |MEM_SIZE|malloced_size |NN void *p
 npR    |MEM_SIZE|malloc_good_size      |size_t nbytes
 #endif
+#if defined(PERL_IN_MALLOC_C)
+sn     |int    |adjust_size_and_find_bucket    |NN size_t *nbytes_p
+#endif
 
 AnpR   |void*  |get_context
 Anp    |void   |set_context    |NN void *t
@@ -203,27 +207,28 @@ Apd       |OP*    |op_prepend_elem|I32 optype|NULLOK OP* first|NULLOK OP* last
 p      |I32    |apply          |I32 type|NN SV** mark|NN SV** sp
 ApM    |void   |apply_attrs_string|NN const char *stashpv|NN CV *cv|NN const char *attrstr|STRLEN len
 Apd    |void   |av_clear       |NN AV *av
-Apd    |SV*    |av_delete      |NN AV *av|I32 key|I32 flags
-ApdR   |bool   |av_exists      |NN AV *av|I32 key
-Apd    |void   |av_extend      |NN AV *av|I32 key
-p      |void   |av_extend_guts |NULLOK AV *av|I32 key|NN SSize_t *maxp \
+Apd    |SV*    |av_delete      |NN AV *av|SSize_t key|I32 flags
+ApdR   |bool   |av_exists      |NN AV *av|SSize_t key
+Apd    |void   |av_extend      |NN AV *av|SSize_t key
+p      |void   |av_extend_guts |NULLOK AV *av|SSize_t key \
+                               |NN SSize_t *maxp \
                                |NN SV ***allocp|NN SV ***arrayp
-ApdR   |SV**   |av_fetch       |NN AV *av|I32 key|I32 lval
-Apd    |void   |av_fill        |NN AV *av|I32 fill
-ApdR   |I32    |av_len         |NN AV *av
-ApdR   |AV*    |av_make        |I32 size|NN SV **strp
+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
 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
 : Used in scope.c, and by Data::Alias
 EXp    |void   |av_reify       |NN AV *av
 ApdR   |SV*    |av_shift       |NN AV *av
-Apd    |SV**   |av_store       |NN AV *av|I32 key|NULLOK SV *val
-AidR   |I32    |av_top_index   |NN AV *av
-AmpdR  |I32    |av_tindex      |NN AV *av
+Apd    |SV**   |av_store       |NN AV *av|SSize_t key|NULLOK SV *val
+AidR   |SSize_t|av_top_index   |NN AV *av
+AmpdR  |SSize_t|av_tindex      |NN AV *av
 Apd    |void   |av_undef       |NN AV *av
 ApdoxM |SV**   |av_create_and_unshift_one|NN AV **const avp|NN SV *const val
-Apd    |void   |av_unshift     |NN AV *av|I32 num
+Apd    |void   |av_unshift     |NN AV *av|SSize_t num
 Apo    |SV**   |av_arylen_p    |NN AV *av
 Apo    |IV*    |av_iter_p      |NN AV *av
 #if defined(PERL_IN_AV_C)
@@ -253,6 +258,8 @@ ApR |UV     |cast_uv        |NV f
 #if !defined(HAS_TRUNCATE) && !defined(HAS_CHSIZE) && defined(F_FREESP)
 ApR    |I32    |my_chsize      |int fd|Off_t length
 #endif
+p      |const COP*|closest_cop |NN const COP *cop|NULLOK const OP *o \
+                               |NULLOK const OP *curop|bool opnext
 : Used in perly.y
 pR     |OP*    |convert        |I32 optype|I32 flags|NULLOK OP* o
 : Used in op.c and perl.c
@@ -265,7 +272,6 @@ Anprd       |void   |croak_no_modify
 Anprd  |void   |croak_xs_usage |NN const CV *const cv \
                                |NN const char *const params
 npr    |void   |croak_no_mem
-nroX   |void   |Perl_croak_memory_wrap
 nprX   |void   |croak_popstack
 #if defined(WIN32)
 norx   |void   |win32_croak_not_implemented|NN const char * fname
@@ -294,14 +300,15 @@ p |SV *   |core_prototype |NULLOK SV *sv|NN const char *name \
 p      |OP *   |coresub_op     |NN SV *const coreargssv|const int code \
                                |const int opnum
 : Used in sv.c
-p      |void   |cv_ckproto_len_flags   |NN const CV* cv|NULLOK const GV* gv\
+EMXp   |void   |cv_ckproto_len_flags   |NN const CV* cv|NULLOK const GV* gv\
                                |NULLOK const char* p|const STRLEN len \
                                 |const U32 flags
 : Used in pp.c and pp_sys.c
 ApdR   |SV*    |gv_const_sv    |NN GV* gv
 ApdR   |SV*    |cv_const_sv    |NULLOK const CV *const cv
+pR     |SV*    |cv_const_sv_or_av|NULLOK const CV *const cv
 : Used in pad.c
-pR     |SV*    |op_const_sv    |NULLOK const OP* o|NULLOK CV* cv
+pR     |SV*    |op_const_sv    |NULLOK const OP* o
 Apd    |void   |cv_undef       |NN CV* cv
 p      |void   |cv_forget_slab |NN CV *cv
 Ap     |void   |cx_dump        |NN PERL_CONTEXT* cx
@@ -323,6 +330,7 @@ Ap  |void   |debprofdump
 Ap     |I32    |debop          |NN const OP* o
 Ap     |I32    |debstack
 Ap     |I32    |debstackptrs
+pR     |SV *   |defelem_target |NN SV *sv|NULLOK MAGIC *mg
 Anp    |char*  |delimcpy       |NN char* to|NN const char* toend|NN const char* from \
                                |NN const char* fromend|int delim|NN I32* retlen
 : Used in op.c, perl.c
@@ -413,9 +421,6 @@ ApR |I32    |dowantarray
 Ap     |void   |dump_all
 p      |void   |dump_all_perl  |bool justperl
 Ap     |void   |dump_eval
-#if defined(DUMP_FDS)
-Ap     |void   |dump_fds       |NN char* s
-#endif
 Ap     |void   |dump_form      |NN const GV* gv
 Ap     |void   |gv_dump        |NN GV* gv
 Ap     |void   |op_dump        |NN const OP *o
@@ -463,7 +468,7 @@ ApR |GV*    |gv_autoload_pv |NULLOK HV* stash|NN const char* namepv \
                                 |U32 flags
 ApR    |GV*    |gv_autoload_pvn        |NULLOK HV* stash|NN const char* name \
                                         |STRLEN len|U32 flags
-Ap     |void   |gv_check       |NN const HV* stash
+Ap     |void   |gv_check       |NN HV* stash
 Ap     |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
@@ -509,6 +514,8 @@ Ap  |void   |gv_init_pv     |NN GV* gv|NULLOK HV* stash|NN const char* name \
 Ap     |void   |gv_init_pvn    |NN GV* gv|NULLOK HV* stash|NN const char* name \
                                 |STRLEN len|U32 flags
 Ap     |void   |gv_name_set    |NN GV* gv|NN const char *name|U32 len|U32 flags
+px     |GV *   |gv_override    |NN const char * const name \
+                               |const STRLEN len
 XMpd   |void   |gv_try_downgrade|NN GV* gv
 Apd    |HV*    |gv_stashpv     |NN const char* name|I32 flags
 Apd    |HV*    |gv_stashpvn    |NN const char* name|U32 namelen|I32 flags
@@ -842,6 +849,8 @@ Apd |int    |mg_copy        |NN SV *sv|NN SV *nsv|NULLOK const char *key \
 pd     |void   |mg_localize    |NN SV* sv|NN SV* nsv|bool setmagic
 ApdR   |MAGIC* |mg_find        |NULLOK const SV* sv|int type
 ApdR   |MAGIC* |mg_findext     |NULLOK const SV* sv|int type|NULLOK const MGVTBL *vtbl
+: exported for re.pm
+EXpR   |MAGIC* |mg_find_mglob  |NN SV* sv
 Apd    |int    |mg_free        |NN SV* sv
 Apd    |void   |mg_free_type   |NN SV* sv|int how
 Apd    |int    |mg_get         |NN SV* sv
@@ -855,6 +864,7 @@ poX |OP*    |op_lvalue_flags|NULLOK OP* o|I32 type|U32 flags
 p      |void   |finalize_optree                |NN OP* o
 #if defined(PERL_IN_OP_C)
 s      |void   |finalize_op    |NN OP* o
+s      |void   |move_proto_attr|NN OP **proto|NN OP **attrs|NN const GV *name
 #endif
 : Used in op.c and pp_sys.c
 p      |int    |mode_from_discipline|NULLOK const char* s|STRLEN len
@@ -891,6 +901,8 @@ pX  |I32    |my_stat_flags  |NULLOK const U32 flags
 Ap     |char * |my_strftime    |NN const char *fmt|int sec|int min|int hour|int mday|int mon|int year|int wday|int yday|int isdst
 : Used in pp_ctl.c
 p      |void   |my_unexec
+ADMnoPR        |UV     |NATIVE_TO_NEED |const UV enc|const UV ch
+ADMnoPR        |UV     |ASCII_TO_NEED  |const UV enc|const UV ch
 Apa    |OP*    |newANONLIST    |NULLOK OP* o
 Apa    |OP*    |newANONHASH    |NULLOK OP* o
 Ap     |OP*    |newANONSUB     |I32 floor|NULLOK OP* proto|NULLOK OP* block
@@ -954,6 +966,7 @@ Apda        |SV*    |newRV_noinc    |NN SV *const sv
 Apda   |SV*    |newSV          |const STRLEN len
 Apa    |OP*    |newSVREF       |NN OP* o
 Apda   |OP*    |newSVOP        |I32 type|I32 flags|NN SV* sv
+pa     |SV*    |newSVavdefelem |NN AV *av|SSize_t ix|bool extendible
 Apda   |SV*    |newSViv        |const IV i
 Apda   |SV*    |newSVuv        |const UV u
 Apda   |SV*    |newSVnv        |const NV n
@@ -1084,12 +1097,12 @@ Ap      |SV*    |regclass_swash |NULLOK const regexp *prog \
                                |NN const struct regnode *node|bool doinit \
                                |NULLOK SV **listsvp|NULLOK SV **altsvp
 #ifdef PERL_IN_REGCOMP_C
-EMsR   |SV*    |_new_invlist_C_array|NN UV* list
-: Not used currently: EXMs     |bool   |_invlistEQ     |NN SV* const a|NN SV* const b|bool complement_b
+EMsR   |SV*    |_new_invlist_C_array|NN const UV* const list
+: Not used currently: EXMs     |bool   |_invlistEQ     |NN SV* const a|NN SV* const b|const bool complement_b
 #endif
 Ap     |I32    |pregexec       |NN REGEXP * const prog|NN char* stringarg \
-                               |NN char* strend|NN char* strbeg|I32 minend \
-                               |NN SV* screamer|U32 nosave
+                               |NN char* strend|NN char* strbeg \
+                               |SSize_t minend |NN SV* screamer|U32 nosave
 Ap     |void   |pregfree       |NULLOK REGEXP* r
 Ap     |void   |pregfree2      |NN REGEXP *rx
 : FIXME - is anything in re using this now?
@@ -1120,10 +1133,10 @@ EiPR    |I32    |regcurly       |NN const char *s                   \
                                |const bool rbrace_must_be_escaped
 #endif
 Ap     |I32    |regexec_flags  |NN REGEXP *const rx|NN char *stringarg \
-                               |NN char *strend|NN char *strbeg|I32 minend \
-                               |NN SV *sv|NULLOK void *data|U32 flags
+                               |NN char *strend|NN char *strbeg \
+                               |SSize_t minend|NN SV *sv \
+                               |NULLOK void *data|U32 flags
 ApR    |regnode*|regnext       |NULLOK regnode* p
-
 EXp |SV*|reg_named_buff          |NN REGEXP * const rx|NULLOK SV * const key \
                                  |NULLOK SV * const value|const U32 flags
 EXp |SV*|reg_named_buff_iter     |NN REGEXP * const rx|NULLOK const SV * const lastkey \
@@ -1177,8 +1190,9 @@ Apda      |char*  |savesharedsvpv |NN SV *sv
 Apda   |char*  |savesvpv       |NN SV* sv
 Ap     |void   |savestack_grow
 Ap     |void   |savestack_grow_cnt     |I32 need
-Amp    |void   |save_aelem     |NN AV* av|I32 idx|NN SV **sptr
-Ap     |void   |save_aelem_flags|NN AV* av|I32 idx|NN SV **sptr|const U32 flags
+Amp    |void   |save_aelem     |NN AV* av|SSize_t idx|NN SV **sptr
+Ap     |void   |save_aelem_flags|NN AV* av|SSize_t idx|NN SV **sptr \
+                                |const U32 flags
 Ap     |I32    |save_alloc     |I32 size|I32 pad
 Ap     |void   |save_aptr      |NN AV** aptr
 Ap     |AV*    |save_ary       |NN GV* gv
@@ -1186,7 +1200,7 @@ Ap        |void   |save_bool      |NN bool* boolp
 Ap     |void   |save_clearsv   |NN SV** svp
 Ap     |void   |save_delete    |NN HV *hv|NN char *key|I32 klen
 Ap     |void   |save_hdelete   |NN HV *hv|NN SV *keysv
-Ap     |void   |save_adelete   |NN AV *av|I32 key
+Ap     |void   |save_adelete   |NN AV *av|SSize_t key
 Ap     |void   |save_destructor|DESTRUCTORFUNC_NOCONTEXT_t f|NN void* p
 Ap     |void   |save_destructor_x|DESTRUCTORFUNC_t f|NULLOK void* p
 Apmb   |void   |save_freesv    |NULLOK SV* sv
@@ -1220,6 +1234,7 @@ Ap        |void   |save_vptr      |NN void *ptr
 Ap     |void   |save_re_context
 Ap     |void   |save_padsv_and_mortalize|PADOFFSET off
 Ap     |void   |save_sptr      |NN SV** sptr
+Xp     |void   |save_strlen    |NN STRLEN* ptr
 Ap     |SV*    |save_svref     |NN SV** sptr
 Ap     |void   |save_pushptr   |NULLOK void *const ptr|const int type
 Ap     |void   |save_pushi32ptr|const I32 i|NULLOK void *const ptr|const int type
@@ -1248,6 +1263,8 @@ Apd       |NV     |scan_oct       |NN const char* start|STRLEN len|NN STRLEN* retlen
 AMpd   |OP*    |op_scope       |NULLOK OP* o
 Ap     |char*  |screaminstr    |NN SV *bigstr|NN SV *littlestr|I32 start_shift \
                                |I32 end_shift|NN I32 *old_posp|I32 last
+: Only used by perl.c/miniperl.c, but defined in caretx.c
+px     |void   |set_caret_X
 Apd    |void   |setdefout      |NN GV* gv
 Ap     |HEK*   |share_hek      |NN const char* str|I32 len|U32 hash
 #if defined(HAS_SIGACTION) && defined(SA_SIGINFO)
@@ -1258,12 +1275,12 @@ Anp     |Signal_t |csighandler  |int sig|NULLOK siginfo_t *info|NULLOK void *uap
 np     |Signal_t |sighandler   |int sig
 Anp    |Signal_t |csighandler  |int sig
 #endif
-Ap     |SV**   |stack_grow     |NN SV** sp|NN SV** p|int n
+Ap     |SV**   |stack_grow     |NN SV** sp|NN SV** p|SSize_t n
 Ap     |I32    |start_subparse |I32 is_format|U32 flags
 : Used in pp_ctl.c
 p      |void   |sub_crush_depth|NN CV* cv
 Amd    |bool   |sv_2bool       |NN SV *const sv
-Apd    |bool   |sv_2bool_flags |NN SV *const sv|const I32 flags
+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
 Apd    |IO*    |sv_2io         |NN SV *const sv
@@ -1360,6 +1377,8 @@ Apd       |void   |sv_magic       |NN SV *const sv|NULLOK SV *const obj|const int how \
 Apd    |MAGIC *|sv_magicext    |NN SV *const sv|NULLOK SV *const obj|const int how \
                                |NULLOK const MGVTBL *const vtbl|NULLOK const char *const name \
                                |const I32 namlen
+: exported for re.pm
+EXp    |MAGIC *|sv_magicext_mglob|NN SV *sv
 ApdbamR        |SV*    |sv_mortalcopy  |NULLOK SV *const oldsv
 XpaR   |SV*    |sv_mortalcopy_flags|NULLOK SV *const oldsv|U32 flags
 ApdR   |SV*    |sv_newmortal
@@ -1369,6 +1388,8 @@ Apd       |void   |sv_pos_u2b     |NULLOK SV *const sv|NN I32 *const offsetp|NULLOK I32 *con
 Apd    |STRLEN |sv_pos_u2b_flags|NN SV *const sv|STRLEN uoffset \
                                |NULLOK STRLEN *const lenp|U32 flags
 Apd    |void   |sv_pos_b2u     |NULLOK SV *const sv|NN I32 *const offsetp
+Apd    |STRLEN |sv_pos_b2u_flags|NN SV *const sv|STRLEN const offset \
+                                |U32 flags
 Amdb   |char*  |sv_pvn_force   |NN SV* sv|NULLOK STRLEN* lp
 Apd    |char*  |sv_pvutf8n_force|NN SV *const sv|NULLOK STRLEN *const lp
 Apd    |char*  |sv_pvbyten_force|NN SV *const sv|NULLOK STRLEN *const lp
@@ -1428,17 +1449,15 @@ EsM     |void   |_append_range_to_invlist   |NN SV* const invlist|const UV start|const
 EiMR   |UV*    |_invlist_array_init    |NN SV* const invlist|const bool will_have_0
 EiMR   |UV*    |invlist_array  |NN SV* const invlist
 EsM    |void   |invlist_extend    |NN SV* const invlist|const UV len
-EiMR   |UV*    |get_invlist_zero_addr  |NN SV* invlist
 EiMR   |UV     |invlist_max    |NN SV* const invlist
-EiM    |void   |invlist_set_len|NN SV* const invlist|const UV len
+EiM    |void   |invlist_set_len|NN SV* const invlist|const UV len|const bool offset
 EiMR   |IV*    |get_invlist_previous_index_addr|NN SV* invlist
 EiMR   |IV     |invlist_previous_index|NN SV* const invlist
 EiM    |void   |invlist_set_previous_index|NN SV* const invlist|const IV index
 EiM    |void   |invlist_trim   |NN SV* const invlist
 EiMR   |SV*    |invlist_clone  |NN SV* const invlist
 EiMR   |bool   |invlist_is_iterating|NN SV* const invlist
-EiMR   |UV*    |get_invlist_iter_addr  |NN SV* invlist
-EiMR   |UV*    |get_invlist_version_id_addr    |NN SV* invlist
+EiMR   |STRLEN*|get_invlist_iter_addr  |NN SV* invlist
 EiM    |void   |invlist_iterinit|NN SV* invlist
 EsMR   |bool   |invlist_iternext|NN SV* invlist|NN UV* start|NN UV* end
 EiM    |void   |invlist_iterfinish|NN SV* invlist
@@ -1446,9 +1465,13 @@ EiMR     |UV     |invlist_highest|NN SV* const invlist
 #endif
 #if defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_UTF8_C)
 EXmM   |void   |_invlist_intersection  |NN SV* const a|NN SV* const b|NN SV** i
-EXpM   |void   |_invlist_intersection_maybe_complement_2nd|NULLOK SV* const a|NN SV* const b|bool complement_b|NN SV** i
+EXpM   |void   |_invlist_intersection_maybe_complement_2nd \
+               |NULLOK SV* const a|NN SV* const b          \
+               |const bool complement_b|NN SV** i
 EXmM   |void   |_invlist_union |NULLOK SV* const a|NN SV* const b|NN SV** output
-EXpM   |void   |_invlist_union_maybe_complement_2nd|NULLOK SV* const a|NN SV* const b|bool complement_b|NN SV** output
+EXpM   |void   |_invlist_union_maybe_complement_2nd        \
+               |NULLOK SV* const a|NN SV* const b          \
+               |const bool complement_b|NN SV** output
 EXmM   |void   |_invlist_subtract|NN SV* const a|NN SV* const b|NN SV** result
 EXpM   |void   |_invlist_invert|NN SV* const invlist
 EXpM   |void   |_invlist_invert_prop|NN SV* const invlist
@@ -1464,13 +1487,17 @@ EXp     |SV*    |_core_swash_init|NN const char* pkg|NN const char* name \
 #endif
 #if defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_REGEXEC_C) || defined(PERL_IN_UTF8_C)
 EXMpR  |SV*    |_invlist_contents|NN SV* const invlist
-EiMR   |UV*    |_get_invlist_len_addr  |NN SV* invlist
+EiMR   |bool*  |get_invlist_offset_addr|NN SV* invlist
 EiMR   |UV     |_invlist_len   |NN SV* const invlist
 EMiR   |bool   |_invlist_contains_cp|NN SV* const invlist|const UV cp
 EXpMR  |IV     |_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
-: Not used currently: EXMp     |void   |_invlist_dump  |NN SV* const invlist|NN const char * const header
+#endif
+#if defined(PERL_IN_REGCOMP_C) || defined (PERL_IN_DUMP_C)
+EXMp   |void   |_invlist_dump  |NN PerlIO *file|I32 level   \
+                               |NN const char* const indent \
+                               |NN SV* const invlist
 #endif
 Ap     |void   |taint_env
 Ap     |void   |taint_proper   |NULLOK const char* f|NN const char *const s
@@ -1520,30 +1547,21 @@ ApMd    |U8*    |bytes_from_utf8|NN const U8 *s|NN STRLEN *len|NULLOK bool *is_utf8
 ApMd   |U8*    |bytes_to_utf8  |NN const U8 *s|NN STRLEN *len
 ApdD   |UV     |utf8_to_uvchr  |NN const U8 *s|NULLOK STRLEN *retlen
 ApdD   |UV     |utf8_to_uvuni  |NN const U8 *s|NULLOK STRLEN *retlen
-ApM    |UV     |valid_utf8_to_uvuni    |NN const U8 *s|NULLOK STRLEN *retlen
-Apd    |UV     |utf8_to_uvchr_buf      |NN const U8 *s|NN const U8 *send|NULLOK STRLEN *retlen
-Apd    |UV     |utf8_to_uvuni_buf      |NN const U8 *s|NN const U8 *send|NULLOK STRLEN *retlen
+ApMD   |UV     |valid_utf8_to_uvuni    |NN const U8 *s|NULLOK STRLEN *retlen
+Amd    |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
 
-#ifdef EBCDIC
 Adp    |UV     |utf8n_to_uvchr |NN const U8 *s|STRLEN curlen|NULLOK STRLEN *retlen|U32 flags
 ApM    |UV     |valid_utf8_to_uvchr    |NN const U8 *s|NULLOK STRLEN *retlen
-#else
-Adpbm  |UV     |utf8n_to_uvchr |NN const U8 *s|STRLEN curlen|NULLOK STRLEN *retlen|U32 flags
-ApbmM  |UV     |valid_utf8_to_uvchr    |NN const U8 *s|NULLOK STRLEN *retlen
-#endif
 
-Adp    |UV     |utf8n_to_uvuni |NN const U8 *s|STRLEN curlen|NULLOK STRLEN *retlen|U32 flags
+Ap     |UV     |utf8n_to_uvuni|NN const U8 *s|STRLEN curlen|NULLOK STRLEN *retlen|U32 flags
 
-#ifdef EBCDIC
-Apd    |U8*    |uvchr_to_utf8  |NN U8 *d|UV uv
-#else
-Apdbm  |U8*    |uvchr_to_utf8  |NN U8 *d|UV uv
-#endif
-
-Apbm   |U8*    |uvuni_to_utf8  |NN U8 *d|UV uv
-Ap     |U8*    |uvchr_to_utf8_flags    |NN U8 *d|UV uv|UV flags
-Apd    |U8*    |uvuni_to_utf8_flags    |NN U8 *d|UV uv|UV 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|UV flags
+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
 : Used by Data::Alias
@@ -1555,6 +1573,8 @@ p |I32    |wait4pid       |Pid_t pid|NN int* statusp|int flags
 : Used in locale.c and perl.c
 p      |U32    |parse_unicode_opts|NN const char **popt
 Ap     |U32    |seed
+Xpno   |double |drand48_r      |NN perl_drand48_t *random_state
+Xpno   |void   |drand48_init_r |NN perl_drand48_t *random_state|U32 seed
 : Only used in perl.c
 p        |void        |get_hash_seed        |NN unsigned char * const seed_buffer
 : Used in doio.c, pp_hot.c, pp_sys.c
@@ -1581,6 +1601,8 @@ Am        |I32    |whichsig       |NN const char* sig
 Ap     |I32    |whichsig_sv    |NN SV* sigsv
 Ap     |I32    |whichsig_pv    |NN const char* sig
 Ap     |I32    |whichsig_pvn   |NN const char* sig|STRLEN len
+: used to check for NULs in pathnames and other names
+AiR    |bool   |is_safe_syscall|NN const char *pv|STRLEN len|NN const char *what|NN const char *op_name
 : Used in pp_ctl.c
 p      |void   |write_to_stderr|NN SV* msv
 : Used in op.c
@@ -1609,6 +1631,7 @@ Anpa      |Malloc_t|safesysmalloc |MEM_SIZE nbytes
 Anpa   |Malloc_t|safesyscalloc |MEM_SIZE elements|MEM_SIZE size
 Anpa   |Malloc_t|safesysrealloc|Malloc_t where|MEM_SIZE nbytes
 Anp    |Free_t |safesysfree    |Malloc_t where
+Asrnx  |void   |croak_memory_wrap
 #if defined(PERL_GLOBAL_STRUCT)
 Ap     |struct perl_vars *|GetVars
 Ap     |struct perl_vars*|init_global_struct
@@ -1675,7 +1698,7 @@ Apd       |void   |sv_utf8_encode |NN SV *const sv
 ApdM   |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
-Ap     |void   |tmps_grow      |I32 n
+Ap     |void   |tmps_grow      |SSize_t n
 Apd    |SV*    |sv_rvweaken    |NN SV *const sv
 : This is indirectly referenced by globals.c. This is somewhat annoying.
 p      |int    |magic_killbackrefs|NN SV *sv|NN MAGIC *mg
@@ -1729,9 +1752,10 @@ Ap       |void   |sys_intern_dup |NN struct interp_intern* src|NN struct interp_intern*
 #  endif
 #endif
 
-AopP   |const XOP *    |custom_op_xop  |NN const OP *o
+AmopP  |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
+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
 
@@ -1758,6 +1782,19 @@ sR       |I32    |do_trans_complex_utf8  |NN SV * const sv
 #if defined(PERL_IN_GV_C)
 s      |void   |gv_init_svtype |NN GV *gv|const svtype sv_type
 s      |void   |gv_magicalize_isa      |NN GV *gv
+s  |bool|parse_gv_stash_name|NN HV **stash|NN GV **gv \
+                     |NN const char **name|NN STRLEN *len \
+                     |NN const char *nambeg|STRLEN full_len \
+                     |const U32 is_utf8|const I32 add
+s  |bool|find_default_stash|NN HV **stash|NN const char *name \
+                     |STRLEN len|const U32 is_utf8|const I32 add \
+                     |svtype sv_type
+s  |bool|gv_magicalize|NN GV *gv|NN HV *stash|NN const char *name \
+                     |STRLEN len|bool addmg \
+                     |svtype sv_type
+s  |void|maybe_multimagic_gv|NN GV *gv|NN const char *name|const svtype sv_type
+s  |bool|gv_is_in_main|NN const char *name|STRLEN len \
+                      |const U32 is_utf8
 s      |HV*    |require_tie_mod|NN GV *gv|NN const char *varpv|NN SV* namesv \
                                |NN const char *methpv|const U32 flags
 #endif
@@ -1785,7 +1822,7 @@ sM        |void   |clear_placeholders     |NN HV *hv|U32 items
 #endif
 
 #if defined(PERL_IN_MG_C)
-s      |void   |save_magic     |I32 mgs_ix|NN SV *sv
+s      |void   |save_magic_flags|I32 mgs_ix|NN SV *sv|U32 flags
 -s     |int    |magic_methpack |NN SV *sv|NN const MAGIC *mg|NN SV *meth
 s      |SV*    |magic_methcall1|NN SV *sv|NN const MAGIC *mg \
                                |NN SV *meth|U32 flags \
@@ -1923,7 +1960,8 @@ sR        |PerlIO *|check_type_and_open|NN SV *name
 #ifndef PERL_DISABLE_PMC
 sR     |PerlIO *|doopen_pm     |NN SV *name
 #endif
-s      |SV **  |adjust_stack_on_leave|NN SV **newsp|NN SV **sp|NN SV **mark|I32 gimme|U32 flags
+s      |SV **  |adjust_stack_on_leave|NN SV **newsp|NN SV **sp|NN SV **mark|I32 gimme \
+                                     |U32 flags|bool lvalue
 iRn    |bool   |path_is_searchable|NN const char *name
 sR     |I32    |run_user_filter|int idx|NN SV *buf_sv|int maxlen
 sR     |PMOP*  |make_matcher   |NN REGEXP* re
@@ -1963,85 +2001,110 @@ p      |OP *   |tied_method|NN SV *methname|NN SV **sp \
                                |const U32 flags|U32 argc|...
 
 #if defined(PERL_IN_REGCOMP_C)
-Es     |regnode*|reg           |NN struct RExC_state_t *pRExC_state \
+Es     |regnode*|reg           |NN RExC_state_t *pRExC_state \
                                |I32 paren|NN I32 *flagp|U32 depth
-Es     |regnode*|reganode      |NN struct RExC_state_t *pRExC_state|U8 op \
+Es     |regnode*|reganode      |NN RExC_state_t *pRExC_state|U8 op \
                                |U32 arg
-Es     |regnode*|regatom       |NN struct RExC_state_t *pRExC_state \
+Es     |regnode*|regatom       |NN RExC_state_t *pRExC_state \
                                |NN I32 *flagp|U32 depth
-Es     |regnode*|regbranch     |NN struct RExC_state_t *pRExC_state \
+Es     |regnode*|regbranch     |NN RExC_state_t *pRExC_state \
                                |NN I32 *flagp|I32 first|U32 depth
-Es     |STRLEN |reguni         |NN const struct RExC_state_t *pRExC_state \
+Es     |STRLEN |reguni         |NN const RExC_state_t *pRExC_state \
                                |UV uv|NN char *s
-Es     |regnode*|regclass      |NN struct RExC_state_t *pRExC_state \
+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 swash                    \
+                               |const bool has_user_defined_property
+Es     |regnode*|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              \
                                |NULLOK SV** ret_invlist
-Es     |bool|could_it_be_a_POSIX_class|NN struct RExC_state_t *pRExC_state
-Es     |regnode*|handle_regex_sets|NN struct RExC_state_t *pRExC_state \
+Es     |bool|could_it_be_a_POSIX_class|NN RExC_state_t *pRExC_state
+Es     |regnode*|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|parse_lparen_question_flags|NN struct RExC_state_t *pRExC_state
-Es     |regnode*|reg_node      |NN struct RExC_state_t *pRExC_state|U8 op
+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     |UV     |reg_recode     |const char value|NN SV **encp
-Es     |regnode*|regpiece      |NN struct RExC_state_t *pRExC_state \
+Es     |regnode*|regpiece      |NN RExC_state_t *pRExC_state \
                                |NN I32 *flagp|U32 depth
-Es     |bool   |grok_bslash_N  |NN struct RExC_state_t *pRExC_state        \
+Es     |bool   |grok_bslash_N  |NN RExC_state_t *pRExC_state        \
                                |NULLOK regnode** nodep|NULLOK UV *valuep   \
                                |NN I32 *flagp|U32 depth|bool in_char_class \
                                |const bool strict
-Es     |void   |reginsert      |NN struct RExC_state_t *pRExC_state \
+Es     |void   |reginsert      |NN RExC_state_t *pRExC_state \
                                |U8 op|NN regnode *opnd|U32 depth
-Es     |void   |regtail        |NN struct RExC_state_t *pRExC_state \
+Es     |void   |regtail        |NN RExC_state_t *pRExC_state \
                                |NN regnode *p|NN const regnode *val|U32 depth
-Es     |SV *   |reg_scan_name  |NN struct RExC_state_t *pRExC_state \
+Es     |SV *   |reg_scan_name  |NN RExC_state_t *pRExC_state \
                                |U32 flags
-Es     |U32    |join_exact     |NN struct RExC_state_t *pRExC_state \
+Es     |U32    |join_exact     |NN RExC_state_t *pRExC_state \
                                |NN regnode *scan|NN UV *min_subtract  \
                                |NN bool *has_exactf_sharp_s  \
                                |U32 flags|NULLOK regnode *val|U32 depth
-EsRn   |char * |regwhite       |NN struct RExC_state_t *pRExC_state \
+EsRn   |char * |regwhite       |NN RExC_state_t *pRExC_state \
                                |NN char *p
-EsRn   |char * |regpatws       |NN struct RExC_state_t *pRExC_state \
+EsRn   |char * |regpatws       |NN RExC_state_t *pRExC_state \
                                |NN char *p|const bool recognize_comment
-Ei     |void   |alloc_maybe_populate_EXACT|NN struct RExC_state_t *pRExC_state \
+Ei     |void   |alloc_maybe_populate_EXACT|NN RExC_state_t *pRExC_state \
                                |NN regnode *node|NN I32 *flagp|STRLEN len \
                                |UV code_point
-Ei     |U8   |compute_EXACTish|NN struct RExC_state_t *pRExC_state
-Es     |char * |nextchar       |NN struct RExC_state_t *pRExC_state
-Es     |bool   |reg_skipcomment|NN struct RExC_state_t *pRExC_state
-Es     |void   |scan_commit    |NN const struct RExC_state_t *pRExC_state \
-                               |NN struct scan_data_t *data|NN I32 *minlenp \
+Ei     |U8   |compute_EXACTish|NN RExC_state_t *pRExC_state
+Es     |char * |nextchar       |NN RExC_state_t *pRExC_state
+Es     |bool   |reg_skipcomment|NN RExC_state_t *pRExC_state
+Es     |void   |scan_commit    |NN const RExC_state_t *pRExC_state \
+                               |NN struct scan_data_t *data        \
+                               |NN SSize_t *minlenp                \
                                |int is_inf
-Esn    |void   |cl_anything    |NN const struct RExC_state_t *pRExC_state \
-                               |NN struct regnode_charclass_class *cl
-EsRn   |int    |cl_is_anything |NN const struct regnode_charclass_class *cl
-Esn    |void   |cl_init        |NN const struct RExC_state_t *pRExC_state \
-                               |NN struct regnode_charclass_class *cl
-Esn    |void   |cl_and         |NN struct regnode_charclass_class *cl \
-                               |NN const struct regnode_charclass_class *and_with
-Esn    |void   |cl_or          |NN const struct RExC_state_t *pRExC_state \
-                               |NN struct regnode_charclass_class *cl \
-                               |NN const struct regnode_charclass_class *or_with
-Es     |I32    |study_chunk    |NN struct RExC_state_t *pRExC_state \
-                               |NN regnode **scanp|NN I32 *minlenp \
-                               |NN I32 *deltap|NN regnode *last \
+Es     |void   |populate_ANYOF_from_invlist|NN regnode *node|NN SV** invlist_ptr
+Es     |void   |ssc_anything   |NN regnode_ssc *ssc
+EsR    |int    |ssc_is_anything|NN const regnode_ssc *ssc
+Es     |void   |ssc_init       |NN const RExC_state_t *pRExC_state \
+                               |NN regnode_ssc *ssc
+EsR    |int    |ssc_is_cp_posixl_init|NN const RExC_state_t *pRExC_state \
+                               |NN const regnode_ssc *ssc
+Es     |void   |ssc_and        |NN const RExC_state_t *pRExC_state \
+                               |NN regnode_ssc *ssc                \
+                               |NN const regnode_ssc *and_with
+Esn    |void   |ssc_flags_and  |NN regnode_ssc *ssc|const U8 and_with
+Es     |void   |ssc_or         |NN const RExC_state_t *pRExC_state \
+                               |NN regnode_ssc *ssc \
+                               |NN const regnode_ssc *or_with
+Es     |SV*    |get_ANYOF_cp_list_for_ssc                                 \
+                               |NN const RExC_state_t *pRExC_state \
+                               |NN const regnode_charclass_posixl* const node
+Ei     |void   |ssc_intersection|NN regnode_ssc *ssc \
+                               |NN SV* const invlist|const bool invert_2nd
+Ei     |void   |ssc_union      |NN regnode_ssc *ssc \
+                               |NN SV* const invlist|const bool invert_2nd
+Ei     |void   |ssc_add_range  |NN regnode_ssc *ssc \
+                               |UV const start|UV const end
+Ei     |void   |ssc_cp_and     |NN regnode_ssc *ssc \
+                               |UV const cp
+Ei     |void   |ssc_clear_locale|NN regnode_ssc *ssc
+Es     |void   |ssc_finalize   |NN RExC_state_t *pRExC_state \
+                               |NN regnode_ssc *ssc
+Es     |SSize_t|study_chunk    |NN RExC_state_t *pRExC_state \
+                               |NN regnode **scanp|NN SSize_t *minlenp \
+                               |NN SSize_t *deltap|NN regnode *last \
                                |NULLOK struct scan_data_t *data \
-                               |I32 stopparen|NULLOK U8* recursed \
-                               |NULLOK struct regnode_charclass_class *and_withp \
+                                |I32 stopparen|U32 recursed_depth \
+                               |NULLOK regnode_ssc *and_withp \
                                |U32 flags|U32 depth
-EsRn   |U32    |add_data       |NN struct RExC_state_t *pRExC_state|U32 n \
-                               |NN const char *s
-rs     |void   |re_croak2      |NN const char* pat1|NN const char* pat2|...
-Ei     |I32    |regpposixcc    |NN struct RExC_state_t *pRExC_state \
+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|...
+Ei     |I32    |regpposixcc    |NN RExC_state_t *pRExC_state \
                                |I32 value|const bool strict
-Es     |I32    |make_trie      |NN struct RExC_state_t *pRExC_state \
+Es     |I32    |make_trie      |NN RExC_state_t *pRExC_state \
                                |NN regnode *startbranch|NN regnode *first \
                                |NN regnode *last|NN regnode *tail \
                                |U32 word_count|U32 flags|U32 depth
-Es     |void   |make_trie_failtable    |NN struct RExC_state_t *pRExC_state \
+Es     |void   |make_trie_failtable    |NN RExC_state_t *pRExC_state \
                                 |NN regnode *source|NN regnode *stclass \
                                |U32 depth
 #  ifdef DEBUGGING
@@ -2053,6 +2116,7 @@ Es        |const regnode*|dumpuntil|NN const regexp *r|NN const regnode *start \
                                |NULLOK const regnode *plast \
                                |NN SV* sv|I32 indent|U32 depth
 Es     |void   |put_byte       |NN SV* sv|int c
+Es     |bool   |put_latin1_charclass_innards|NN SV* sv|NN char* bitmap
 Es     |void   |dump_trie      |NN const struct _reg_trie_data *trie\
                                |NULLOK HV* widecharmap|NN AV *revcharmap\
                                |U32 depth
@@ -2062,7 +2126,7 @@ 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 struct RExC_state_t *pRExC_state \
+Es     |U8     |regtail_study  |NN RExC_state_t *pRExC_state \
                                |NN regnode *p|NN const regnode *val|U32 depth
 #  endif
 #endif
@@ -2070,7 +2134,7 @@ Es        |U8     |regtail_study  |NN struct RExC_state_t *pRExC_state \
 #if defined(PERL_IN_REGEXEC_C)
 ERs    |bool   |isFOO_lc       |const U8 classnum|const U8 character
 ERs    |bool   |isFOO_utf8_lc  |const U8 classnum|NN const U8* character
-ERs    |I32    |regmatch       |NN regmatch_info *reginfo|NN char *startpos|NN regnode *prog
+ERs    |SSize_t|regmatch       |NN regmatch_info *reginfo|NN char *startpos|NN regnode *prog
 ERs    |I32    |regrepeat      |NN regexp *prog|NN char **startposp \
                                |NN const regnode *p \
                                |NN regmatch_info *const reginfo \
@@ -2083,15 +2147,15 @@ Es      |CHECKPOINT|regcppush   |NN const regexp *rex|I32 parenfloor\
                                |U32 maxopenparen
 Es     |void   |regcppop       |NN regexp *rex\
                                |NN U32 *maxopenparen_p
-ERsn   |U8*    |reghop3        |NN U8 *s|I32 off|NN const U8 *lim
+ERsn   |U8*    |reghop3        |NN U8 *s|SSize_t off|NN const U8 *lim
 ERsM   |SV*    |core_regclass_swash|NULLOK const regexp *prog \
                                |NN const struct regnode *node|bool doinit \
                                |NULLOK SV **listsvp
 #ifdef XXX_dmq
-ERsn   |U8*    |reghop4        |NN U8 *s|I32 off|NN const U8 *llim \
+ERsn   |U8*    |reghop4        |NN U8 *s|SSize_t off|NN const U8 *llim \
                                |NN const U8 *rlim
 #endif
-ERsn   |U8*    |reghopmaybe3   |NN U8 *s|I32 off|NN const U8 *lim
+ERsn   |U8*    |reghopmaybe3   |NN U8 *s|SSize_t off|NN const U8 *lim
 ERs    |char*  |find_byclass   |NN regexp * prog|NN const regnode *c \
                                |NN char *s|NN const char *strend \
                                |NULLOK regmatch_info *reginfo
@@ -2139,7 +2203,9 @@ 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
 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
+s      |void   |not_incrementable      |NN SV *const sv
 s      |I32    |visit          |NN SVFUNC_t f|const U32 flags|const U32 mask
 #  ifdef DEBUGGING
 s      |void   |del_sv |NN SV *p
@@ -2193,26 +2259,26 @@ s       |char*  |force_strict_version   |NN char *s
 s      |char*  |force_word     |NN char *start|int token|int check_keyword \
                                |int allow_pack
 s      |SV*    |tokeq          |NN SV *sv
-s      |void   |readpipe_override|
 sR     |char*  |scan_const     |NN char *start
 iR     |SV*    |get_and_check_backslash_N_name|NN const char* s \
                                |NN const char* const e
 sR     |char*  |scan_formline  |NN char *s
 sR     |char*  |scan_heredoc   |NN char *s
-s      |char*  |scan_ident     |NN char *s|NN const char *send|NN char *dest \
+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 \
-                               |bool deprecate_escaped_matching
+                               |bool deprecate_escaped_matching \
+                               |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      |NN char *s
+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
@@ -2256,21 +2322,18 @@ s       |void   |printbuf       |NN const char *const fmt|NN const char *const s
 EXMp   |bool   |validate_proto |NN SV *name|NULLOK SV *proto|bool warn
 
 #if defined(PERL_IN_UNIVERSAL_C)
-s      |bool|isa_lookup        |NN HV *stash|NN const char * const name \
+s      |bool   |isa_lookup     |NN HV *stash|NN const char * const name \
                                         |STRLEN len|U32 flags
 #endif
 
-#if defined(PERL_IN_LOCALE_C)
-#if defined(USE_LOCALE_NUMERIC) || defined(USE_LOCALE_COLLATE)
+#if defined(PERL_IN_LOCALE_C) && defined(USE_LOCALE)
 s      |char*  |stdize_locale  |NN char* locs
 s      |bool   |is_cur_LC_category_utf8|int category
 #endif
-#endif
 
 #if defined(PERL_IN_UTIL_C)
-s      |const COP*|closest_cop |NN const COP *cop|NULLOK const OP *o
 s      |SV*    |mess_alloc
-s      |SV *|with_queued_errors|NN SV *ex
+s      |SV *   |with_queued_errors|NN SV *ex
 s      |bool   |invoke_exception_hook|NULLOK SV *ex|bool warn
 #if defined(PERL_MEM_LOG) && !defined(PERL_MEM_LOG_NOIMPL)
 sn     |void   |mem_log_common |enum mem_log_type mlt|const UV n|const UV typesize \
@@ -2292,6 +2355,8 @@ iR        |bool   |is_utf8_common |NN const U8 *const p|NN SV **swash|NN const char * con
 sR     |SV*    |swatch_get     |NN SV* swash|UV start|UV span
 #endif
 
+AiMn   |void   |append_utf8_from_native_byte|const U8 byte|NN U8** dest
+
 Apd    |void   |sv_setsv_flags |NN SV *dstr|NULLOK SV *sstr|const I32 flags
 Apd    |void   |sv_catpvn_flags|NN SV *const dstr|NN const char *sstr|const STRLEN len \
                                |const I32 flags
@@ -2322,9 +2387,9 @@ Ap        |int    |PerlIO_eof             |NULLOK PerlIO *f
 Ap     |int    |PerlIO_error           |NULLOK PerlIO *f
 Ap     |int    |PerlIO_flush           |NULLOK PerlIO *f
 Ap     |void   |PerlIO_clearerr        |NULLOK PerlIO *f
-Ap     |void   |PerlIO_set_cnt         |NULLOK PerlIO *f|int cnt
+Ap     |void   |PerlIO_set_cnt         |NULLOK PerlIO *f|SSize_t cnt
 Ap     |void   |PerlIO_set_ptrcnt      |NULLOK PerlIO *f|NULLOK STDCHAR *ptr \
-                                       |int cnt
+                                       |SSize_t cnt
 Ap     |void   |PerlIO_setlinebuf      |NULLOK PerlIO *f
 Ap     |SSize_t|PerlIO_read            |NULLOK PerlIO *f|NN void *vbuf \
                                        |Size_t count
@@ -2337,8 +2402,8 @@ Ap        |int    |PerlIO_seek            |NULLOK PerlIO *f|Off_t offset|int whence
 
 Ap     |STDCHAR *|PerlIO_get_base      |NULLOK PerlIO *f
 Ap     |STDCHAR *|PerlIO_get_ptr       |NULLOK PerlIO *f
-ApR    |int      |PerlIO_get_bufsiz    |NULLOK PerlIO *f
-ApR    |int      |PerlIO_get_cnt       |NULLOK PerlIO *f
+ApR    |SSize_t          |PerlIO_get_bufsiz    |NULLOK PerlIO *f
+ApR    |SSize_t          |PerlIO_get_cnt       |NULLOK PerlIO *f
 
 ApR    |PerlIO *|PerlIO_stdin
 ApR    |PerlIO *|PerlIO_stdout
@@ -2450,7 +2515,7 @@ poM       |AV**   |hv_backreferences_p    |NN HV *hv
 poM    |void   |hv_kill_backrefs       |NN HV *hv
 #endif
 Apd    |void   |hv_clear_placeholders  |NN HV *hv
-ApoR   |I32*   |hv_placeholders_p      |NN HV *hv
+XpoR   |SSize_t*|hv_placeholders_p     |NN HV *hv
 ApoR   |I32    |hv_placeholders_get    |NN const HV *hv
 Apo    |void   |hv_placeholders_set    |NN HV *hv|I32 ph
 
@@ -2515,11 +2580,11 @@ Xpo     |void   |xs_apiversion_bootcheck|NN SV *module|NN const char *api_p \
                                |STRLEN api_len
 
 #ifndef HAS_STRLCAT
-Apno   |Size_t |my_strlcat     |NULLOK char *dst|NULLOK const char *src|Size_t size
+Apnod  |Size_t |my_strlcat     |NULLOK char *dst|NULLOK const char *src|Size_t size
 #endif
 
 #ifndef HAS_STRLCPY
-Apno     |Size_t |my_strlcpy     |NULLOK char *dst|NULLOK const char *src|Size_t size
+Apnod     |Size_t |my_strlcpy     |NULLOK char *dst|NULLOK const char *src|Size_t size
 #endif
 
 #ifdef PERL_MAD
@@ -2604,7 +2669,8 @@ sd        |AV*    |mro_get_linear_isa_dfs|NN HV* stash|U32 level
 s      |void   |mro_clean_isarev|NN HV * const isa   \
                                 |NN const char * const name \
                                 |const STRLEN len \
-                                |NULLOK HV * const exceptions|U32 flags
+                                |NULLOK HV * const exceptions \
+                                |U32 hash|U32 flags
 s      |void   |mro_gather_and_rename|NN HV * const stashes \
                                      |NN HV * const seen_stashes \
                                      |NULLOK HV *stash \
@@ -2644,4 +2710,11 @@ op       |void   |populate_isa   |NN const char *name|STRLEN len|...
 Xop    |bool   |feature_is_enabled|NN const char *const name \
                |STRLEN namelen
 
+: Some static inline functions need predeclaration because they are used
+: inside other static inline functions.
+#if defined(PERL_CORE) || defined (PERL_EXT)
+Ei     |STRLEN |sv_or_pv_pos_u2b|NN SV *sv|NN const char *pv|STRLEN pos \
+                                |NULLOK STRLEN *lenp
+#endif
+
 : ex: set ts=8 sts=4 sw=4 noet: