This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
[Merge] CVs without GVs
[perl5.git] / embed.fnc
index 5284cc9..09312e9 100644 (file)
--- a/embed.fnc
+++ b/embed.fnc
@@ -71,7 +71,7 @@
 :
 :   m  Implemented as a macro:
 :
-:         suppress proto.h entry
+:         suppress proto.h entry (actually, not suppressed, but commented out)
 :         suppress entry in the list of exported symbols
 :         suppress embed.h entry
 :
@@ -253,10 +253,10 @@ Apd       |const PERL_CONTEXT *   |caller_cx|I32 level \
                                |NULLOK const PERL_CONTEXT **dbcxp
 : Used in several source files
 pR     |bool   |cando          |Mode_t mode|bool effective|NN const Stat_t* statbufp
-ApR    |U32    |cast_ulong     |NV f
-ApR    |I32    |cast_i32       |NV f
-ApR    |IV     |cast_iv        |NV f
-ApR    |UV     |cast_uv        |NV f
+ApRn   |U32    |cast_ulong     |NV f
+ApRn   |I32    |cast_i32       |NV f
+ApRn   |IV     |cast_iv        |NV f
+ApRn   |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
@@ -280,7 +280,12 @@ norx       |void   |win32_croak_not_implemented|NN const char * fname
 #endif
 #if defined(PERL_IMPLICIT_CONTEXT)
 Afnrp  |void   |croak_nocontext|NULLOK const char* pat|...
-Afnp   |OP*    |die_nocontext  |NULLOK const char* pat|...
+:removing noreturn to silence a warning
+#ifdef _MSC_VER
+Afnp   |OP*    |die_nocontext  |NULLOK const char* pat|...
+#else
+Afnrp  |OP*    |die_nocontext  |NULLOK const char* pat|...
+#endif
 Afnp   |void   |deb_nocontext  |NN const char* pat|...
 Afnp   |char*  |form_nocontext |NN const char* pat|...
 Anp    |void   |load_module_nocontext|U32 flags|NN SV* name|NULLOK SV* ver|...
@@ -307,10 +312,11 @@ EMXp      |void   |cv_ckproto_len_flags   |NN const CV* cv|NULLOK const GV* gv\
                                 |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
+ApdRn  |SV*    |cv_const_sv    |NULLOK const CV *const cv
+pRn    |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
+Ap     |SV *   |cv_name        |NN CV *cv|NULLOK SV *sv
 Apd    |void   |cv_undef       |NN CV* cv
 p      |void   |cv_forget_slab |NN CV *cv
 Ap     |void   |cx_dump        |NN PERL_CONTEXT* cx
@@ -337,8 +343,14 @@ 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
 pM     |void   |delete_eval_scope
-Apd    |OP*    |die_sv         |NN SV *baseex
-Afpd   |OP*    |die            |NULLOK const char* pat|...
+:removing noreturn to silence a warning
+#ifdef _MSC_VER
+Apd    |OP*    |die_sv         |NN SV *baseex
+Afpd   |OP*    |die            |NULLOK const char* pat|...
+#else
+Aprd    |OP*    |die_sv         |NN SV *baseex
+Afrpd   |OP*    |die            |NULLOK const char* pat|...
+#endif
 : Used in util.c
 pr     |void   |die_unwind     |NN SV* msv
 Ap     |void   |dounwind       |I32 cxix
@@ -455,7 +467,7 @@ pR  |OP *   |parse_subsignature
 p      |char*  |find_script    |NN const char *scriptname|bool dosearch \
                                |NULLOK const char *const *const search_ext|I32 flags
 #if defined(PERL_IN_OP_C)
-s      |OP*    |force_list     |NULLOK OP* arg
+s      |OP*    |force_list     |NULLOK OP* arg|bool nullit
 i      |OP*    |op_integerize  |NN OP *o
 i      |OP*    |op_std_init    |NN OP *o
 : FIXME
@@ -523,6 +535,7 @@ Ap  |void   |gv_fullname4   |NN SV* sv|NN const GV* gv|NULLOK const char* prefix|bool
 : Used in scope.c
 pMox   |GP *   |newGP          |NN GV *const gv
 pX     |void   |cvgv_set       |NN CV* cv|NULLOK GV* gv
+poX    |GV *   |cvgv_from_hek  |NN CV* cv
 pX     |void   |cvstash_set    |NN CV* cv|NULLOK HV* stash
 Amd    |void   |gv_init        |NN GV* gv|NULLOK HV* stash \
                                 |NN const char* name|STRLEN len|int multi
@@ -537,6 +550,10 @@ px |GV *   |gv_override    |NN const char * const name \
 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
+#if defined(PERL_IN_GV_C)
+i      |HV*    |gv_stashpvn_internal|NN const char* name|U32 namelen|I32 flags
+i      |HV*    |gv_stashsvpvn_cached|NULLOK SV *namesv|NULLOK const char* name|U32 namelen|I32 flags
+#endif
 Apd    |HV*    |gv_stashsv     |NN SV* sv|I32 flags
 Apd    |void   |hv_clear       |NULLOK HV *hv
 : used in SAVEHINTS() and op.c
@@ -633,7 +650,7 @@ pR  |OP*    |invert         |NULLOK OP* cmd
 ApR    |I32    |is_lvalue_sub
 : Used in cop.h
 XopR   |I32    |was_lvalue_sub
-iRn    |STRLEN |_is_utf8_char_slow|NN const U8 *s|NN const U8 *e
+AiMRn  |STRLEN |_is_utf8_char_slow|NN const U8 *s|NN const U8 *e
 ADMpPR |U32    |to_uni_upper_lc|U32 c
 ADMpPR |U32    |to_uni_title_lc|U32 c
 ADMpPR |U32    |to_uni_lower_lc|U32 c
@@ -657,7 +674,7 @@ AMp |UV     |to_uni_title   |UV c|NN U8 *p|NN STRLEN *lenp
 ADMpPR |bool   |isIDFIRST_lazy |NN const char* p
 ADMpPR |bool   |isALNUM_lazy   |NN const char* p
 #ifdef PERL_IN_UTF8_C
-s    |U8     |to_lower_latin1|const U8 c|NULLOK U8 *p|NULLOK STRLEN *lenp
+snR    |U8     |to_lower_latin1|const U8 c|NULLOK U8 *p|NULLOK STRLEN *lenp
 #endif
 #if defined(PERL_IN_UTF8_C) || defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_REGEXEC_C)
 EXp        |UV        |_to_fold_latin1|const U8 c|NN U8 *p|NN STRLEN *lenp|const unsigned int flags
@@ -760,6 +777,9 @@ Apd |void   |op_null        |NN OP* o
 EXp    |void   |op_clear       |NN OP* o
 Ap     |void   |op_refcnt_lock
 Ap     |void   |op_refcnt_unlock
+Apdn   |OP*    |op_sibling_splice|NN OP *parent|NULLOK OP *start \
+               |int del_count|NULLOK OP* insert
+Apdn   |OP*    |op_parent|NN OP *o
 #if defined(PERL_IN_OP_C)
 s      |OP*    |listkids       |NULLOK OP* o
 #endif
@@ -789,9 +809,12 @@ EMsPR      |char*|form_short_octal_warning|NN const char * const s  \
                                |const STRLEN len
 #endif
 Apd    |UV     |grok_hex       |NN const char* start|NN STRLEN* len_p|NN I32* flags|NULLOK NV *result
+Apdn   |int    |grok_infnan    |NN const char** sp|NN const char *send
 Apd    |int    |grok_number    |NN const char *pv|STRLEN len|NULLOK UV *valuep
+Apd    |int    |grok_number_flags|NN const char *pv|STRLEN len|NULLOK UV *valuep|U32 flags
 ApdR   |bool   |grok_numeric_radix|NN const char **sp|NN const char *send
 Apd    |UV     |grok_oct       |NN const char* start|NN STRLEN* len_p|NN I32* flags|NULLOK NV *result
+Apdn   |UV     |grok_atou      |NN const char* pv|NULLOK const char** endptr
 : These are all indirectly referenced by globals.c. This is somewhat annoying.
 p      |int    |magic_clearenv |NN SV* sv|NN MAGIC* mg
 p      |int    |magic_clear_all_env|NN SV* sv|NN MAGIC* mg
@@ -851,7 +874,7 @@ p   |int    |magic_wipepack |NN SV* sv|NN MAGIC* mg
 pod    |SV*    |magic_methcall |NN SV *sv|NN const MAGIC *mg \
                                |NN SV *meth|U32 flags \
                                |U32 argc|...
-Ap     |void   |markstack_grow
+Ap     |I32 *  |markstack_grow
 #if defined(USE_LOCALE_COLLATE)
 p      |int    |magic_setcollxfrm|NN SV* sv|NN MAGIC* mg
 : Defined in locale.c, used only in sv.c
@@ -870,18 +893,18 @@ Apd       |int    |mg_copy        |NN SV *sv|NN SV *nsv|NULLOK const char *key \
                                |I32 klen
 : Defined in mg.c, used only in scope.c
 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
+ApdRn  |MAGIC* |mg_find        |NULLOK const SV* sv|int type
+ApdRn  |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
 ApdD   |U32    |mg_length      |NN SV* sv
-Apd    |void   |mg_magical     |NN SV* sv
+Apdn   |void   |mg_magical     |NN SV* sv
 Apd    |int    |mg_set         |NN SV* sv
 Ap     |I32    |mg_size        |NN SV* sv
-Ap     |void   |mini_mktime    |NN struct tm *ptm
+Apn    |void   |mini_mktime    |NN struct tm *ptm
 AMmd   |OP*    |op_lvalue      |NULLOK OP* o|I32 type
 poX    |OP*    |op_lvalue_flags|NULLOK OP* o|I32 type|U32 flags
 p      |void   |finalize_optree                |NN OP* o
@@ -938,11 +961,7 @@ Apd        |CV*    |newCONSTSUB    |NULLOK HV* stash|NULLOK const char* name|NULLOK SV* sv
 Apd    |CV*    |newCONSTSUB_flags|NULLOK HV* stash \
                                  |NULLOK const char* name|STRLEN len \
                                  |U32 flags|NULLOK SV* sv
-#ifdef PERL_MAD
-Ap     |OP*    |newFORM        |I32 floor|NULLOK OP* o|NULLOK OP* block
-#else
 Ap     |void   |newFORM        |I32 floor|NULLOK OP* o|NULLOK OP* block
-#endif
 Apda   |OP*    |newFOROP       |I32 flags|NULLOK OP* sv|NN OP* expr|NULLOK OP* block|NULLOK OP* cont
 Apda   |OP*    |newGIVENOP     |NN OP* cond|NN OP* block|PADOFFSET defsv_off
 Apda   |OP*    |newLOGOP       |I32 optype|I32 flags|NN OP *first|NN OP *other
@@ -1017,6 +1036,9 @@ po        |OP*    |ck_entersub_args_core|NN OP *entersubop|NN GV *namegv \
                                      |NN SV *protosv
 Apd    |void   |cv_get_call_checker|NN CV *cv|NN Perl_call_checker *ckfun_p|NN SV **ckobj_p
 Apd    |void   |cv_set_call_checker|NN CV *cv|NN Perl_call_checker ckfun|NN SV *ckobj
+Apd    |void   |cv_set_call_checker_flags|NN CV *cv \
+                                         |NN Perl_call_checker ckfun \
+                                         |NN SV *ckobj|U32 flags
 Apd    |void   |wrap_op_checker|Optype opcode|NN Perl_check_t new_checker|NN Perl_check_t *old_checker_p
 Apa    |PERL_SI*|new_stackinfo|I32 stitems|I32 cxitems
 Ap     |char*  |scan_vstring   |NN const char *s|NN const char *const e \
@@ -1044,11 +1066,7 @@ p        |void   |opslab_free_nopad|NN OPSLAB *slab
 p      |void   |opslab_force_free|NN OPSLAB *slab
 #endif
 : Used in perly.y
-#ifdef PERL_MAD
-p      |OP*    |package        |NN OP* o
-#else
 p      |void   |package        |NN OP* o
-#endif
 : Used in perly.y
 p      |void   |package_version|NN OP* v
 : Used in toke.c and perly.y
@@ -1096,12 +1114,15 @@ AmPM    |char*  |my_setlocale   |int category|NULLOK const char* locale
 #endif
 ApOM   |int    |init_i18nl10n  |int printwarn
 ApOM   |int    |init_i18nl14n  |int printwarn
+ApM    |char*  |my_strerror    |const int errnum
 ApOM   |void   |new_collate    |NULLOK const char* newcoll
 ApOM   |void   |new_ctype      |NN const char* newctype
 ApOM   |void   |new_numeric    |NULLOK const char* newcoll
 Ap     |void   |set_numeric_local
 Ap     |void   |set_numeric_radix
 Ap     |void   |set_numeric_standard
+ApM    |bool   |_is_in_locale_category|const bool compiling|const int category
+Apd    |void   |sync_locale
 ApdO   |void   |require_pv     |NN const char* pv
 Apd    |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
@@ -1157,8 +1178,7 @@ Ap        |char*  |re_intuit_start|NN REGEXP * const rx \
                                |NULLOK re_scream_pos_data *data
 Ap     |SV*    |re_intuit_string|NN REGEXP  *const r
 #if defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_TOKE_C)
-EiPR   |I32    |regcurly       |NN const char *s                   \
-                               |const bool rbrace_must_be_escaped
+EiPRn  |I32    |regcurly       |NN const char *s
 #endif
 Ap     |I32    |regexec_flags  |NN REGEXP *const rx|NN char *stringarg \
                                |NN char *strend|NN char *strbeg \
@@ -1289,8 +1309,14 @@ Apd      |NV     |scan_hex       |NN const char* start|STRLEN len|NN STRLEN* retlen
 Ap     |char*  |scan_num       |NN const char* s|NN YYSTYPE *lvalp
 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
+:removing noreturn to silence a warning
+#ifdef _MSC_VER
+Ap      |char*  |screaminstr    |NN SV *bigstr|NN SV *littlestr|I32 start_shift \
+                                |I32 end_shift|NN I32 *old_posp|I32 last
+#else
+Apr     |char*  |screaminstr    |NN SV *bigstr|NN SV *littlestr|I32 start_shift \
+                                |I32 end_shift|NN I32 *old_posp|I32 last
+#endif
 : Only used by perl.c/miniperl.c, but defined in caretx.c
 px     |void   |set_caret_X
 Apd    |void   |setdefout      |NN GV* gv
@@ -1339,7 +1365,7 @@ Apd       |I32    |sv_true        |NULLOK SV *const sv
 sd     |void   |sv_add_arena   |NN char *const ptr|const U32 size \
                                |const U32 flags
 #endif
-Apd    |int    |sv_backoff     |NN SV *const sv
+Apdn   |int    |sv_backoff     |NN SV *const sv
 Apd    |SV*    |sv_bless       |NN SV *const sv|NN HV *const stash
 #if defined(PERL_DEBUG_READONLY_COW)
 p      |void   |sv_buf_to_ro   |NN SV *sv
@@ -1480,22 +1506,22 @@ Ap      |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
 EsM    |void   |_append_range_to_invlist   |NN SV* const invlist|const UV start|const UV end
-EiMR   |UV*    |_invlist_array_init    |NN SV* const invlist|const bool will_have_0
-EiMR   |UV*    |invlist_array  |NN SV* const invlist
+EiMRn  |UV*    |_invlist_array_init    |NN SV* const invlist|const bool will_have_0
+EiMRn  |UV*    |invlist_array  |NN SV* const invlist
 EsM    |void   |invlist_extend    |NN SV* const invlist|const UV len
-EiMR   |UV     |invlist_max    |NN SV* const invlist
+EiMRn  |UV     |invlist_max    |NN SV* const invlist
 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
+EiMRn  |IV*    |get_invlist_previous_index_addr|NN SV* invlist
+EiMRn  |IV     |invlist_previous_index|NN SV* const invlist
+EiMn   |void   |invlist_set_previous_index|NN SV* const invlist|const IV index
+EiMn   |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   |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
-EiMR   |UV     |invlist_highest|NN SV* const invlist
+EiMRn  |bool   |invlist_is_iterating|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
+EiMn   |void   |invlist_iterfinish|NN SV* invlist
+EiMRn  |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
@@ -1512,7 +1538,7 @@ 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|const UV start|const UV end
 EXMpR  |SV*    |_setup_canned_invlist|const STRLEN size|const UV element0|NN UV** other_elements_ptr
-EXMp   |void   |_invlist_populate_swatch   |NN SV* const invlist|const UV start|const UV end|NN U8* swatch
+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 \
@@ -1521,19 +1547,21 @@ 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   |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
+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 |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
 #endif
 #if defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_REGEXEC_C)
 ApM    |SV*    |_get_regclass_nonbitmap_data                              \
                                |NULLOK const regexp *prog                 \
-                               |NN const struct regnode *node|bool doinit \
+                               |NN const struct regnode *node             \
+                               |bool doinit                               \
                                |NULLOK SV **listsvp                       \
-                               |NULLOK SV **lonly_utf8_locale
+                               |NULLOK SV **lonly_utf8_locale             \
+                               |NULLOK SV *exclude_list
 EXp    |void|_load_PL_utf8_foldclosures|
 #endif
 #if defined(PERL_IN_REGCOMP_C) || defined (PERL_IN_DUMP_C)
@@ -1558,7 +1586,7 @@ Abmd      |UV     |to_utf8_fold   |NN const U8 *p|NN U8* ustrp|NULLOK STRLEN *lenp
 AMp    |UV     |_to_utf8_fold_flags|NN const U8 *p|NN U8* ustrp       \
                                |NULLOK STRLEN *lenp|U8 flags
 #if defined(PERL_IN_MG_C) || defined(PERL_IN_PP_C)
-p      |bool   |translate_substr_offsets|STRLEN curlen|IV pos1_iv \
+pn     |bool   |translate_substr_offsets|STRLEN curlen|IV pos1_iv \
                                         |bool pos1_is_uv|IV len_iv \
                                         |bool len_is_uv|NN STRLEN *posp \
                                         |NN STRLEN *lenp
@@ -1575,17 +1603,12 @@ Ap      |void   |unsharepvn     |NULLOK const char* sv|I32 len|U32 hash
 : Used in gv.c, hv.c
 p      |void   |unshare_hek    |NULLOK HEK* hek
 : Used in perly.y
-#ifdef PERL_MAD
-p      |OP *   |utilize        |int aver|I32 floor|NULLOK OP* version \
-                               |NN OP* idop|NULLOK OP* arg
-#else
 p      |void   |utilize        |int aver|I32 floor|NULLOK OP* version|NN OP* idop|NULLOK OP* arg
-#endif
 Ap     |U8*    |utf16_to_utf8  |NN U8* p|NN U8 *d|I32 bytelen|NN I32 *newlen
 Ap     |U8*    |utf16_to_utf8_reversed|NN U8* p|NN U8 *d|I32 bytelen|NN I32 *newlen
 AdpPR  |STRLEN |utf8_length    |NN const U8* s|NN const U8 *e
 ApdPR  |IV     |utf8_distance  |NN const U8 *a|NN const U8 *b
-ApdPR  |U8*    |utf8_hop       |NN const U8 *s|I32 off
+ApdPRn |U8*    |utf8_hop       |NN const U8 *s|I32 off
 ApMd   |U8*    |utf8_to_bytes  |NN U8 *s|NN STRLEN *len
 Apd    |int    |bytes_cmp_utf8 |NN const U8 *b|STRLEN blen|NN const U8 *u \
                                |STRLEN ulen
@@ -1641,6 +1664,12 @@ Afp      |void   |warner         |U32 err|NN const char* pat|...
 Afp    |void   |ck_warner      |U32 err|NN const char* pat|...
 Afp    |void   |ck_warner_d    |U32 err|NN const char* pat|...
 Ap     |void   |vwarner        |U32 err|NN const char* pat|NULLOK va_list* args
+#ifdef USE_C_BACKTRACE
+pd     |Perl_c_backtrace*|get_c_backtrace|int max_depth|int skip
+dm     |void   |free_c_backtrace|NN Perl_c_backtrace* bt
+Apd    |SV*    |get_c_backtrace_dump|int max_depth|int skip
+Apd    |bool   |dump_c_backtrace|NN PerlIO* fp|int max_depth|int skip
+#endif
 : FIXME
 p      |void   |watch          |NN char** addr
 Am     |I32    |whichsig       |NN const char* sig
@@ -1896,7 +1925,6 @@ sR        |OP*    |search_const   |NN OP *o
 sR     |OP*    |new_logop      |I32 type|I32 flags|NN OP **firstp|NN OP **otherp
 s      |void   |simplify_sort  |NN OP *o
 s      |void   |null_listop_in_list_context |NN OP* o
-s      |SV*    |gv_ename       |NN GV *gv
 sRn    |bool   |scalar_mod_type|NULLOK const OP *o|I32 type
 s      |OP *   |my_kid         |NULLOK OP *o|NULLOK OP *attrs|NN OP **imopsp
 s      |OP *   |dup_attrlist   |NN OP *o
@@ -1906,18 +1934,18 @@ s       |void   |bad_type_pv    |I32 n|NN const char *t|NN const char *name|U32 flags|NN co
 s      |void   |bad_type_gv    |I32 n|NN const char *t|NN GV *gv|U32 flags|NN const OP *kid
 s      |void   |no_bareword_allowed|NN OP *o
 sR     |OP*    |no_fh_allowed|NN OP *o
-sR     |OP*    |too_few_arguments_sv|NN OP *o|NN SV* namesv|U32 flags
 sR     |OP*    |too_few_arguments_pv|NN OP *o|NN const char* name|U32 flags
 s      |OP*    |too_many_arguments_pv|NN OP *o|NN const char* name|U32 flags
-sR     |OP*    |too_many_arguments_sv|NN OP *o|NN SV* namesv|U32 flags
 s      |bool   |looks_like_bool|NN const OP* o
 s      |OP*    |newGIVWHENOP   |NULLOK OP* cond|NN OP *block \
                                |I32 enter_opcode|I32 leave_opcode \
                                |PADOFFSET entertarg
 s      |OP*    |ref_array_or_hash|NULLOK OP* cond
-s      |void   |process_special_blocks |I32 floor \
+s      |bool   |process_special_blocks |I32 floor \
                                        |NN const char *const fullname\
                                        |NN GV *const gv|NN CV *const cv
+s      |void   |clear_special_blocks   |NN const char *const fullname\
+                                       |NN GV *const gv|NN CV *const cv
 #endif
 Xpa    |void*  |Slab_Alloc     |size_t sz
 Xp     |void   |Slab_Free      |NN void *op
@@ -2034,7 +2062,9 @@ s |I32    |sv_i_ncmp      |NN SV *const a|NN SV *const b
 s      |I32    |amagic_ncmp    |NN SV *const a|NN SV *const b
 s      |I32    |amagic_i_ncmp  |NN SV *const a|NN SV *const b
 s      |I32    |amagic_cmp     |NN SV *const str1|NN SV *const str2
+#   ifdef USE_LOCALE_COLLATE
 s      |I32    |amagic_cmp_locale|NN SV *const str1|NN SV *const str2
+#endif
 s      |I32    |sortcv         |NN SV *const a|NN SV *const b
 s      |I32    |sortcv_xsub    |NN SV *const a|NN SV *const b
 s      |I32    |sortcv_stacked |NN SV *const a|NN SV *const b
@@ -2070,6 +2100,9 @@ Es        |void    |set_ANYOF_arg |NN RExC_state_t* const pRExC_state \
                                |NULLOK SV* const only_utf8_locale_list    \
                                |NULLOK SV* const swash                    \
                                |const bool has_user_defined_property
+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 \
                                |NN I32 *flagp|U32 depth|const bool stop_at_1 \
                                |bool allow_multi_fold                        \
@@ -2077,7 +2110,7 @@ Es        |regnode*|regclass      |NN RExC_state_t *pRExC_state \
                                |NULLOK SV** ret_invlist
 Es     |void|add_above_Latin1_folds|NN RExC_state_t *pRExC_state|const U8 cp \
                                |NN SV** invlist
-Es     |bool|could_it_be_a_POSIX_class|NN RExC_state_t *pRExC_state
+Esn    |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                \
@@ -2087,10 +2120,10 @@ 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 RExC_state_t *pRExC_state \
                                |NN I32 *flagp|U32 depth
-Es     |bool   |grok_bslash_N  |NN RExC_state_t *pRExC_state        \
+Es     |STRLEN |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
+                               |NN I32 *flagp|U32 depth                    \
+                               |NULLOK SV** substitute_parse
 Es     |void   |reginsert      |NN RExC_state_t *pRExC_state \
                                |U8 op|NN regnode *opnd|U32 depth
 Es     |void   |regtail        |NN RExC_state_t *pRExC_state \
@@ -2101,24 +2134,24 @@ 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
-EsR    |char * |regpatws       |NN 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 RExC_state_t *pRExC_state \
                                |NN regnode *node|NN I32 *flagp|STRLEN len \
                                |UV code_point|bool downgradable
-Ei     |U8   |compute_EXACTish|NN RExC_state_t *pRExC_state
+Ein    |U8   |compute_EXACTish|NN RExC_state_t *pRExC_state
 Es     |char * |nextchar       |NN RExC_state_t *pRExC_state
-Ei     |char * |reg_skipcomment|NN RExC_state_t *pRExC_state|NN char * p
+Ein    |char * |reg_skipcomment|NN RExC_state_t *pRExC_state|NN char * p
 Es     |void   |scan_commit    |NN const RExC_state_t *pRExC_state \
                                |NN struct scan_data_t *data        \
                                |NN SSize_t *minlenp                \
                                |int is_inf
 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
+EsRn   |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 \
+EsRn   |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                \
@@ -2137,7 +2170,7 @@ 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
+Ein    |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 \
@@ -2166,9 +2199,13 @@ Es       |const regnode*|dumpuntil|NN const regexp *r|NN const regnode *start \
                                |NULLOK const regnode *last \
                                |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   |put_range      |NN SV* sv|UV start|UV end
+EnPs   |const char *|cntrl_to_mnemonic|const U8 c
+Es     |void   |put_code_point |NN SV* sv|UV c
+Es     |bool   |put_charclass_bitmap_innards|NN SV* sv     \
+                               |NN char* bitmap            \
+                               |NULLOK SV** bitmap_invlist
+Es     |void   |put_range      |NN SV* sv|UV start|const UV end    \
+                               |const bool allow_literals
 Es     |void   |dump_trie      |NN const struct _reg_trie_data *trie\
                                |NULLOK HV* widecharmap|NN AV *revcharmap\
                                |U32 depth
@@ -2211,7 +2248,7 @@ ERs       |char*  |find_byclass   |NN regexp * prog|NN const regnode *c \
                                |NULLOK regmatch_info *reginfo
 Es     |void   |to_utf8_substr |NN regexp * prog
 Es     |bool   |to_byte_substr |NN regexp * prog
-ERs    |I32    |reg_check_named_buff_matched   |NN const regexp *rex \
+ERsn   |I32    |reg_check_named_buff_matched   |NN const regexp *rex \
                                                |NN const regnode *scan
 #  ifdef DEBUGGING
 Es     |void   |dump_exec_pos  |NN const char *locinput|NN const regnode *scan|NN const char *loc_regeol\
@@ -2253,7 +2290,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
@@ -2318,7 +2357,6 @@ 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 \
                                |NULLOK char **delimp
 sR     |char*  |scan_subst     |NN char *start
 sR     |char*  |scan_trans     |NN char *start
@@ -2337,7 +2375,7 @@ s |void   |checkcomma     |NN const char *s|NN const char *name \
 s      |void   |force_ident    |NN const char *s|int kind
 s      |void   |force_ident_maybe_lex|char pit
 s      |void   |incline        |NN const char *s
-s      |int    |intuit_method  |NN char *s|NULLOK GV *gv|NULLOK CV *cv
+s      |int    |intuit_method  |NN char *s|NULLOK SV *ioname|NULLOK CV *cv
 s      |int    |intuit_more    |NN char *s
 s      |I32    |lop            |I32 f|int x|NN char *s
 rs     |void   |missingterm    |NULLOK char *s
@@ -2422,7 +2460,7 @@ 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
 Apn    |int    |my_socketpair  |int family|int type|int protocol|int fd[2]
-Ap     |int    |my_dirfd       |NULLOK DIR* dir
+Apn    |int    |my_dirfd       |NULLOK DIR* dir
 #ifdef PERL_ANY_COW
 : Used in pp_hot.c and regexec.c
 pMXE   |SV*    |sv_setsv_cow   |NULLOK SV* dstr|NN SV* sstr
@@ -2459,7 +2497,7 @@ ApR       |SSize_t          |PerlIO_get_cnt       |NULLOK PerlIO *f
 ApR    |PerlIO *|PerlIO_stdin
 ApR    |PerlIO *|PerlIO_stdout
 ApR    |PerlIO *|PerlIO_stderr
-#endif /* PERLIO_LAYERS */
+#endif /* USE_PERLIO */
 
 : Only used in dump.c
 p      |void   |deb_stack_all
@@ -2469,9 +2507,6 @@ s |void   |deb_stack_n    |NN SV** stack_base|I32 stack_min \
 #endif
 
 : pad API
-#ifdef PERL_MAD
-Mnpd   |void   |pad_peg        |NN const char* s
-#endif
 Apda   |PADLIST*|pad_new       |int flags
 #if defined(PERL_IN_PAD_C)
 s      |PADOFFSET|pad_alloc_name|NN SV *namesv|U32 flags \
@@ -2638,58 +2673,8 @@ Apnod    |Size_t |my_strlcat     |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
-#if defined(PERL_IN_DUMP_C)
-sf     |void   |xmldump_attr   |I32 level|NN PerlIO *file|NN const char* pat \
-                               |...
-#endif
-Mfp    |void   |xmldump_indent |I32 level|NN PerlIO *file|NN const char* pat \
-                               |...
-Mp     |void   |xmldump_vindent|I32 level|NN PerlIO *file|NN const char* pat \
-                               |NULLOK va_list *args
-Mp     |void   |xmldump_all
-p      |void   |xmldump_all_perl       |bool justperl
-Mp     |void   |xmldump_packsubs       |NN const HV* stash
-p      |void   |xmldump_packsubs_perl  |NN const HV* stash|bool justperl
-Mp     |void   |xmldump_sub    |NN const GV* gv
-Mp     |void   |xmldump_sub_perl       |NN const GV* gv|bool justperl
-Mp     |void   |xmldump_form   |NN const GV* gv
-Mp     |void   |xmldump_eval
-Mp     |char*  |sv_catxmlsv    |NN SV *dsv|NN SV *ssv
-Mp     |char*  |sv_catxmlpvn   |NN SV *dsv|NN const char *pv|STRLEN len|int utf8
-Mp     |char*  |sv_catxmlpv    |NN SV *dsv|NN const char *pv|int utf8
-Mp     |char*  |sv_xmlpeek     |NN SV* sv
-Mp     |void   |do_pmop_xmldump|I32 level|NN PerlIO *file \
-                               |NULLOK const PMOP *pm
-Mp     |void   |pmop_xmldump   |NULLOK const PMOP* pm
-Mp     |void   |do_op_xmldump  |I32 level|NN PerlIO *file|NULLOK const OP *o
-Mp     |void   |op_xmldump     |NN const OP *o
-
-Mp     |TOKEN* |newTOKEN       |I32 optype|YYSTYPE lval \
-                               |NULLOK MADPROP* madprop
-Mp     |void   |token_free     |NN TOKEN *tk
-Mp     |void   |token_getmad   |NN TOKEN *tk|NULLOK OP *o|char slot
-Mp     |void   |op_getmad_weak |NULLOK OP* from|NULLOK OP* o|char slot
-Mp     |void   |op_getmad      |NULLOK OP* from|NULLOK OP* o|char slot
-Mp     |void   |prepend_madprops|NULLOK MADPROP* mp|NULLOK OP* o|char slot
-Mp     |void   |append_madprops|NULLOK MADPROP* tm|NULLOK OP* o|char slot
-Mp     |void   |addmad         |NULLOK MADPROP* tm|NULLOK MADPROP** root \
-                               |char slot
-Mp     |MADPROP*|newMADsv      |char key|NN SV* sv
-Mp     |MADPROP*|newMADPROP    |char key|char type|NULLOK void* val \
-                               |I32 vlen
-Mp     |void   |mad_free       |NULLOK MADPROP* mp
-
-#  if defined(PERL_IN_TOKE_C)
-s      |char*  |skipspace0     |NN char *s
-s      |char*  |skipspace1     |NN char *s
-s      |char*  |skipspace2     |NN char *s|NULLOK SV **sv
-s      |void   |start_force    |int where
-s      |void   |curmad         |char slot|NULLOK SV *sv
-#  endif
-Mp     |int    |madlex
-Mp     |int    |madparse       |int gramtype
-#endif
+Apdn   |bool   |isinfnan       |NV nv
+
 #if !defined(HAS_SIGNBIT)
 AMdnoP |int    |Perl_signbit   |NV f
 #endif