This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
op.c: Add debugging dump function
[perl5.git] / embed.fnc
index e3c94d1..87c5159 100644 (file)
--- a/embed.fnc
+++ b/embed.fnc
 : This has had to be done with things like MAX and MIN, but nearly everything
 : else has been created without regard to the namespace pollution problem.
 :
+: Here's what else you need to know about using this file with regards to name
+: space pollution:
+:
+: The A flag is used to make a function and its short name visible everywhere
+:           on all platforms.  This should be used to make it part of Perl's
+:           API contract with XS developers.  The documentation for these is
+:           usually placed in perlapi.  If no documentation exists, that fact
+:           is also noted in perlapi.
+:
+: The C flag is used instead for functions and their short names that need to
+:            be accessible everywhere, typically because they are called from a
+:            publicly available macro or inline function, but they are not for
+:            public use by themselves.  The documentation for these is placed
+:            in perlintern.  If no documentation exists, that fact is also
+:            noted in perlintern.
+:
+:            These really need the 'p' flag to avoid name space collisions.
+:
+:           Some of these have been constructed so that the wrapper macro
+:           names begin with an underscore to lessen the chances of a name
+:           collision.  However, this is contrary to the C standard, and those
+:           should be changed.
+:
+: The E flag is used instead for a function and its short name that is supposed
+:            to be used only in the core, and in extensions compiled with the
+:            PERL_EXT symbol defined.  Again, on some platforms, the function
+:            will be visible everywhere, so the 'p' flag is gnerally needed.
+:            Also note that an XS writer can always cheat and pretend to be an
+:            extension by #defining PERL_EXT.
+:
+: The X flag is similar to the C flag in that the function (whose entry better
+:           have the 'p' flag) is accessible everywhere on all platforms.
+:           However the short name macro that normally gets generated is
+:           suppressed outside the core.  (Except it is also visible in
+:           PERL_EXT extensions if the E flag is also specified.)  This flag
+:           is used for functions that are called from a public macro, the
+:           name of which isn't derived from the function name.  You'll have
+:           to write the macro yourself, and from within it, refer to the
+:           function in its full 'Perl_' form with any necessary thread
+:           context parameter.
 :
 : Scattered around the perl source are lines of the form:
 :
 :         proto.h: function is declared as PERL_STATIC_INLINE
 :
 :   m  Implemented as a macro; there is no function associated with this name,
-:      and hence no long Perl_ or S_ name.
+:      and hence no long Perl_ or S_ name.  However, if the macro name itself
+:      begins with 'Perl_', autodoc.pl will show a thread context parameter
+:      unless the 'T' flag is specified.
 :
 :         suppress proto.h entry (actually, not suppressed, but commented out)
 :         suppress entry in the list of exported symbols available on all platforms
@@ -619,7 +661,7 @@ Ap  |bool   |do_close       |NULLOK GV* gv|bool not_implicit
 p      |bool   |do_eof         |NN GV* gv
 
 #ifdef PERL_DEFAULT_DO_EXEC3_IMPLEMENTATION
-pm     |bool|do_exec   |NN const char* cmd
+pM     |bool|do_exec   |NN const char* cmd
 #else
 p      |bool|do_exec   |NN const char* cmd
 #endif
@@ -838,9 +880,11 @@ Xxpd       |void   |gv_try_downgrade|NN GV* gv
 p      |void   |gv_setref      |NN SV *const dstr|NN SV *const sstr
 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) || defined(PERL_IN_UNIVERSAL_C)
+EpG    |HV*    |gv_stashsvpvn_cached   |NULLOK SV *namesv|NULLOK const char* name|U32 namelen|I32 flags
+#endif
 #if defined(PERL_IN_GV_C)
 i      |HV*    |gv_stashpvn_internal   |NN const char* name|U32 namelen|I32 flags
-iG     |HV*    |gv_stashsvpvn_cached   |NULLOK SV *namesv|NULLOK const char* name|U32 namelen|I32 flags
 i      |GV*    |gv_fetchmeth_internal  |NULLOK HV* stash|NULLOK SV* meth|NULLOK const char* name \
                                        |STRLEN len|I32 level|U32 flags
 #endif
@@ -942,28 +986,8 @@ ApR        |I32    |is_lvalue_sub
 : Used in cop.h
 XopR   |I32    |was_lvalue_sub
 CpRTP  |STRLEN |is_utf8_char_helper|NN const U8 * const s|NN const U8 * e|const U32 flags
-CbDpR  |U32    |to_uni_upper_lc|U32 c
-CbDpR  |U32    |to_uni_title_lc|U32 c
-CbDpR  |U32    |to_uni_lower_lc|U32 c
-CbDpR  |bool   |is_uni_alnum   |UV c
-CbDpR  |bool   |is_uni_alnumc  |UV c
-CbDpR  |bool   |is_uni_idfirst |UV c
-CbDpR  |bool   |is_uni_alpha   |UV c
-CbDpPR |bool   |is_uni_ascii   |UV c
-CbDpPR |bool   |is_uni_blank   |UV c
-CbDpPR |bool   |is_uni_space   |UV c
-CbDpPR |bool   |is_uni_cntrl   |UV c
-CbDpR  |bool   |is_uni_graph   |UV c
-CbDpR  |bool   |is_uni_digit   |UV c
-CbDpR  |bool   |is_uni_upper   |UV c
-CbDpR  |bool   |is_uni_lower   |UV c
-CbDpR  |bool   |is_uni_print   |UV c
-CbDpR  |bool   |is_uni_punct   |UV c
-CbDpPR |bool   |is_uni_xdigit  |UV c
 Cp     |UV     |to_uni_upper   |UV c|NN U8 *p|NN STRLEN *lenp
 Cp     |UV     |to_uni_title   |UV c|NN U8 *p|NN STRLEN *lenp
-CbDpR  |bool   |isIDFIRST_lazy |NN const char* p
-CbDpR  |bool   |isALNUM_lazy   |NN const char* p
 p      |void   |init_uniprops
 #ifdef PERL_IN_UTF8_C
 STR    |U8     |to_lower_latin1|const U8 c|NULLOK U8 *p|NULLOK STRLEN *lenp  \
@@ -981,25 +1005,10 @@ EXTp     |UV        |_to_fold_latin1|const U8 c|NN U8 *p|NN STRLEN *lenp|const unsig
 p      |UV     |_to_upper_title_latin1|const U8 c|NN U8 *p|NN STRLEN *lenp|const char S_or_s
 #endif
 Cp     |UV     |to_uni_lower   |UV c|NN U8 *p|NN STRLEN *lenp
-Cmp    |UV     |to_uni_fold    |UV c|NN U8 *p|NN STRLEN *lenp
+Cm     |UV     |to_uni_fold    |UV c|NN U8 *p|NN STRLEN *lenp
 Cp     |UV     |_to_uni_fold_flags|UV c|NN U8 *p|NN STRLEN *lenp|U8 flags
-CbDpR  |bool   |is_uni_alnum_lc|UV c
-CbDpR  |bool   |is_uni_alnumc_lc|UV c
-CbDpR  |bool   |is_uni_idfirst_lc|UV c
 CpR    |bool   |_is_uni_perl_idcont|UV c
 CpR    |bool   |_is_uni_perl_idstart|UV c
-CbDpR  |bool   |is_uni_alpha_lc|UV c
-CbDpPR |bool   |is_uni_ascii_lc|UV c
-CbDpPR |bool   |is_uni_space_lc|UV c
-CbDpPR |bool   |is_uni_blank_lc|UV c
-CbDpPR |bool   |is_uni_cntrl_lc|UV c
-CbDpR  |bool   |is_uni_graph_lc|UV c
-CbDpR  |bool   |is_uni_digit_lc|UV c
-CbDpR  |bool   |is_uni_upper_lc|UV c
-CbDpR  |bool   |is_uni_lower_lc|UV c
-CbDpR  |bool   |is_uni_print_lc|UV c
-CbDpR  |bool   |is_uni_punct_lc|UV c
-CbDpPR |bool   |is_uni_xdigit_lc|UV c
 ATdmoR |bool   |is_utf8_invariant_string|NN const U8* const s              \
                |STRLEN len
 ATidRp |bool   |is_utf8_invariant_string_loc|NN const U8* const s          \
@@ -1015,7 +1024,7 @@ EiTRd     |Size_t |variant_under_utf8_count|NN const U8* const s              \
 AmTdRP |bool   |is_ascii_string|NN const U8* const s|STRLEN len
 AmTdRP |bool   |is_invariant_string|NN const U8* const s|STRLEN len
 #if defined(PERL_CORE) || defined (PERL_EXT)
-EXTidR |bool   |is_utf8_non_invariant_string|NN const U8* const s          \
+EXTidRp        |bool   |is_utf8_non_invariant_string|NN const U8* const s          \
                |STRLEN len
 #endif
 AbTpdD |STRLEN |is_utf8_char   |NN const U8 *s
@@ -1064,45 +1073,12 @@ AmTdP   |bool   |is_utf8_valid_partial_char                                 \
                |NN const U8 * const s|NN const U8 * const e
 ATidRp |bool   |is_utf8_valid_partial_char_flags                           \
                |NN const U8 * const s|NN const U8 * const e|const U32 flags
-CpR    |bool   |_is_uni_FOO|const U8 classnum|const UV c
-CpR    |bool   |_is_utf8_FOO|U8 classnum|NN const U8 * const p             \
-               |NN const char * const name                                 \
-               |NN const char * const alternative                          \
-               |const bool use_utf8|const bool use_locale                  \
-               |NN const char * const file|const unsigned line
-CpR    |bool   |_is_utf8_FOO_with_len|const U8 classnum|NN const U8 *p     \
-               |NN const U8 * const e
-CbDpR  |bool   |is_utf8_alnum  |NN const U8 *p
-CbDpR  |bool   |is_utf8_alnumc |NN const U8 *p
-CbDpR  |bool   |is_utf8_idfirst|NN const U8 *p
-CbDpR  |bool   |is_utf8_xidfirst|NN const U8 *p
-CpR    |bool   |_is_utf8_idcont|NN const U8 *p
-CpR    |bool   |_is_utf8_idstart|NN const U8 *p
-CpR    |bool   |_is_utf8_xidcont|NN const U8 *p
-CpR    |bool   |_is_utf8_xidstart|NN const U8 *p
-CpR    |bool   |_is_utf8_perl_idcont_with_len|NN const U8 *p               \
-               |NN const U8 * const e
-CpR    |bool   |_is_utf8_perl_idstart_with_len|NN const U8 *p              \
+CpR     |bool   |_is_uni_FOO|const U8 classnum|const UV c
+CpR     |bool   |_is_utf8_FOO|const U8 classnum|NN const U8 *p     \
                |NN const U8 * const e
-CbDpR  |bool   |is_utf8_idcont |NN const U8 *p
-CbDpR  |bool   |is_utf8_xidcont        |NN const U8 *p
-CbDpR  |bool   |is_utf8_alpha  |NN const U8 *p
-CbDpR  |bool   |is_utf8_ascii  |NN const U8 *p
-CbDpR  |bool   |is_utf8_blank  |NN const U8 *p
-CbDpR  |bool   |is_utf8_space  |NN const U8 *p
-CbDpR  |bool   |is_utf8_perl_space     |NN const U8 *p
-CbDpR  |bool   |is_utf8_perl_word      |NN const U8 *p
-CbDpR  |bool   |is_utf8_cntrl  |NN const U8 *p
-CbDpR  |bool   |is_utf8_digit  |NN const U8 *p
-CbDpR  |bool   |is_utf8_posix_digit    |NN const U8 *p
-CbDpR  |bool   |is_utf8_graph  |NN const U8 *p
-CbDpR  |bool   |is_utf8_upper  |NN const U8 *p
-CbDpR  |bool   |is_utf8_lower  |NN const U8 *p
-CbDpR  |bool   |is_utf8_print  |NN const U8 *p
-CbDpR  |bool   |is_utf8_punct  |NN const U8 *p
-CbDpR  |bool   |is_utf8_xdigit |NN const U8 *p
-CpR    |bool   |_is_utf8_mark  |NN const U8 *p
-AbDxpR |bool   |is_utf8_mark   |NN const U8 *p
+CpR     |bool   |_is_utf8_perl_idcont|NN const U8 *p|NN const U8 * const e
+CpR     |bool   |_is_utf8_perl_idstart|NN const U8 *p|NN const U8 * const e
+
 #if defined(PERL_CORE) || defined(PERL_EXT)
 EXdpR  |bool   |isSCRIPT_RUN   |NN const U8 *s|NN const U8 *send   \
                                |const bool utf8_target
@@ -1530,6 +1506,7 @@ p |OP*    |pmruntime      |NN OP *o|NN OP *expr|NULLOK OP *repl \
 #if defined(PERL_IN_OP_C)
 S      |OP*    |pmtrans        |NN OP* o|NN OP* expr|NN OP* repl
 #endif
+p      |void   |invmap_dump    |NN SV* invlist|NN UV * map
 Ap     |void   |pop_scope
 Ap     |void   |push_scope
 #if defined(PERL_IN_PERLY_C) || defined(PERL_IN_OP_C) || defined(PERL_IN_TOKE_C)
@@ -1539,6 +1516,7 @@ ApMb      |OP*    |ref            |NULLOK OP* o|I32 type
 S      |OP*    |refkids        |NULLOK OP* o|I32 type
 #endif
 Ap     |void   |regdump        |NN const regexp* r
+CiTop  |struct regexp *|ReANY  |NN const REGEXP * const re
 #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
 EXp    |bool   |_invlistEQ     |NN SV* const a|NN SV* const b|const bool complement_b
@@ -1627,7 +1605,7 @@ 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|SSize_t idx|NN SV **sptr
+Am     |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
@@ -1650,7 +1628,7 @@ Ap        |void   |save_shared_pvref|NN char** str
 Adp    |void   |save_gp        |NN GV* gv|I32 empty
 Apdh   |HV*    |save_hash      |NN GV* gv
 Ap     |void   |save_hints
-Amp    |void   |save_helem     |NN HV *hv|NN SV *key|NN SV **sptr
+Am     |void   |save_helem     |NN HV *hv|NN SV *key|NN SV **sptr
 Ap     |void   |save_helem_flags|NN HV *hv|NN SV *key|NN SV **sptr|const U32 flags
 Apdh   |void   |save_hptr      |NN HV** hptr
 Ap     |void   |save_I16       |NN I16* intp
@@ -1775,10 +1753,10 @@ Apd     |void   |sv_clear       |NN SV *const orig_sv
 #if defined(PERL_IN_SV_C)
 S      |bool   |curse          |NN SV * const sv|const bool check_refcnt
 #endif
-AMopd  |I32    |sv_cmp         |NULLOK SV *const sv1|NULLOK SV *const sv2
+AMpd   |I32    |sv_cmp         |NULLOK SV *const sv1|NULLOK SV *const sv2
 Apd    |I32    |sv_cmp_flags   |NULLOK SV *const sv1|NULLOK SV *const sv2 \
                                |const U32 flags
-AMopd  |I32    |sv_cmp_locale  |NULLOK SV *const sv1|NULLOK SV *const sv2
+AMpd   |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)
@@ -1892,44 +1870,48 @@ Apd     |void   |sv_vsetpvfn    |NN SV *const sv|NN const char *const pat|const STRLEN pa
 ApR    |NV     |str_to_version |NN SV *sv
 EXpR   |SV*    |swash_init     |NN const char* pkg|NN const char* name|NN SV* listsv|I32 minbits|I32 none
 EXp    |UV     |swash_fetch    |NN SV *swash|NN const U8 *ptr|bool do_utf8
-#ifdef PERL_IN_REGCOMP_C
+#if defined(PERL_IN_REGCOMP_C)
 EiR    |SV*    |add_cp_to_invlist      |NULLOK SV* invlist|const UV cp
+Ei     |void   |invlist_extend    |NN SV* const invlist|const UV len
+Ei     |void   |invlist_set_len|NN SV* const invlist|const UV len|const bool offset
+EiRT   |UV     |invlist_highest|NN SV* const invlist
+EiRT   |STRLEN*|get_invlist_iter_addr  |NN SV* invlist
+EiT    |void   |invlist_iterinit|NN SV* invlist
+EiRT   |bool   |invlist_iternext|NN SV* invlist|NN UV* start|NN UV* end
+EiT    |void   |invlist_iterfinish|NN SV* invlist
+#endif
+#if defined(PERL_IN_REGCOMP_C)
 EiRT   |bool   |invlist_is_iterating|NN SV* const invlist
+EiR    |SV*    |invlist_contents|NN SV* const invlist              \
+                                |const bool traditional_style
 #ifndef PERL_EXT_RE_BUILD
 EiRT   |UV*    |_invlist_array_init    |NN SV* const invlist|const bool will_have_0
 EiRT   |UV     |invlist_max    |NN SV* const invlist
-ES     |void   |_append_range_to_invlist   |NN SV* const invlist|const UV start|const UV end
-ES     |void   |invlist_extend    |NN SV* const invlist|const UV len
-ES     |void   |invlist_replace_list_destroys_src|NN SV *dest|NN SV *src
 EiRT   |IV*    |get_invlist_previous_index_addr|NN SV* invlist
-Ei     |void   |invlist_set_len|NN SV* const invlist|const UV len|const bool offset
 EiT    |void   |invlist_set_previous_index|NN SV* const invlist|const IV index
 EiRT   |IV     |invlist_previous_index|NN SV* const invlist
 EiT    |void   |invlist_trim   |NN SV* invlist
 Ei     |void   |invlist_clear  |NN SV* invlist
-S      |void   |initialize_invlist_guts|NN SV* invlist|const Size_t initial_size
 #endif
-EiRT   |STRLEN*|get_invlist_iter_addr  |NN SV* invlist
-EiT    |void   |invlist_iterinit|NN SV* invlist
-ESRT   |bool   |invlist_iternext|NN SV* invlist|NN UV* start|NN UV* end
-EiT    |void   |invlist_iterfinish|NN SV* invlist
-EiRT   |UV     |invlist_highest|NN SV* const invlist
-ERS    |SV*    |_make_exactf_invlist   |NN RExC_state_t *pRExC_state \
-                                       |NN regnode *node
-ESR    |SV*    |invlist_contents|NN SV* const invlist              \
-                                |const bool traditional_style
 ESRT   |bool   |new_regcurly   |NN const char *s|NN const char *e
+ERS    |SV*    |make_exactf_invlist    |NN RExC_state_t *pRExC_state \
+                                       |NN regnode *node
+#ifndef PERL_EXT_RE_BUILD
+ES     |void   |_append_range_to_invlist   |NN SV* const invlist|const UV start|const UV end
+ES     |void   |invlist_replace_list_destroys_src|NN SV *dest|NN SV *src
+S      |void   |initialize_invlist_guts|NN SV* invlist|const Size_t initial_size
 #endif
-#if defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_UTF8_C)
-EXm    |void   |_invlist_intersection  |NN SV* const a|NN SV* const b|NN SV** i
+#endif
+#if defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_UTF8_C) || defined(PERL_IN_OP_C) || defined(PERL_IN_DOOP_C)
+m      |void   |_invlist_intersection  |NN SV* const a|NN SV* const b|NN SV** i
 EXp    |void   |_invlist_intersection_maybe_complement_2nd \
                |NULLOK SV* const a|NN SV* const b          \
                |const bool complement_b|NN SV** i
-EXm    |void   |_invlist_union |NULLOK SV* const a|NN SV* const b|NN SV** output
+Cm     |void   |_invlist_union |NULLOK SV* const a|NN SV* const b|NN SV** output
 EXp    |void   |_invlist_union_maybe_complement_2nd        \
                |NULLOK SV* const a|NN SV* const b          \
                |const bool complement_b|NN SV** output
-EXm    |void   |_invlist_subtract|NN SV* const a|NN SV* const b|NN SV** result
+m      |void   |_invlist_subtract|NN SV* const a|NN SV* const b|NN SV** result
 EXp    |void   |_invlist_invert|NN SV* const invlist
 EXpR   |SV*    |_new_invlist   |IV initial_size
 EXpR   |SV*    |_add_range_to_invlist  |NULLOK SV* invlist|UV start|UV end
@@ -1938,7 +1920,9 @@ EXpR      |SV*    |_setup_canned_invlist|const STRLEN size|const UV element0|NN UV** oth
 #if defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_SV_C)
 EpX    |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_TOKE_C) || defined(PERL_IN_UTF8_C) || defined(PERL_IN_PP_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) || defined(PERL_IN_OP_C)
 EiRT   |UV*    |invlist_array  |NN SV* const invlist
 EiRT   |bool   |is_invlist     |NULLOK SV* const invlist
 EiRT   |bool*  |get_invlist_offset_addr|NN SV* invlist
@@ -1958,7 +1942,7 @@ EXp       |SV*    |_get_regclass_nonbitmap_data                              \
                                |NULLOK SV **lonly_utf8_locale             \
                                |NULLOK SV **output_invlist
 #endif
-#if defined(PERL_IN_REGCOMP_C) || defined (PERL_IN_DUMP_C)
+#if defined(PERL_IN_REGCOMP_C) || defined (PERL_IN_DUMP_C) || defined(PERL_IN_OP_C)
 EXp    |void   |_invlist_dump  |NN PerlIO *file|I32 level   \
                                |NN const char* const indent \
                                |NN SV* const invlist
@@ -1981,19 +1965,14 @@ SR      |char * |unexpected_non_continuation_text                       \
                |STRLEN print_len                                       \
                |const STRLEN non_cont_byte_pos                         \
                |const STRLEN expect_len
+#if 0  /* Not currently used, but may be needed in the future */
 S      |void   |warn_on_first_deprecated_use                               \
                                |NN const char * const name                 \
                                |NN const char * const alternative          \
                                |const bool use_locale                      \
                                |NN const char * const file                 \
                                |const unsigned line
-S      |U32    |check_and_deprecate                                        \
-                               |NN const U8 * p                            \
-                               |NN const U8 ** e                           \
-                               |const unsigned type                        \
-                               |const bool use_locale                      \
-                               |NN const char * const file                 \
-                               |const unsigned line
+#endif
 S      |UV     |_to_utf8_case  |const UV uv1                                   \
                                |NULLOK const U8 *p                             \
                                |NN U8* ustrp                                   \
@@ -2007,22 +1986,14 @@ S       |UV     |turkic_fc      |NN const U8 * const p |NN const U8 * const e|NN U8* ustrp|NN S
 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
 Cp     |UV     |_to_utf8_lower_flags|NN const U8 *p|NULLOK const U8* e         \
-                               |NN U8* ustrp|NULLOK STRLEN *lenp|bool flags    \
-                               |NN const char * const file|const int line
-ApbMdD |UV     |to_utf8_upper  |NN const U8 *p|NN U8* ustrp|NULLOK STRLEN *lenp
+                               |NN U8* ustrp|NULLOK STRLEN *lenp|bool flags
 Cp     |UV     |_to_utf8_upper_flags   |NN const U8 *p|NULLOK const U8 *e      \
-                               |NN U8* ustrp|NULLOK STRLEN *lenp|bool flags    \
-                               |NN const char * const file|const int line
-ApbMdD |UV     |to_utf8_title  |NN const U8 *p|NN U8* ustrp|NULLOK STRLEN *lenp
+                               |NN U8* ustrp|NULLOK STRLEN *lenp|bool flags
 Cp     |UV     |_to_utf8_title_flags   |NN const U8 *p|NULLOK const U8* e      \
-                               |NN U8* ustrp|NULLOK STRLEN *lenp|bool flags    \
-                               |NN const char * const file|const int line
-ApbMdD |UV     |to_utf8_fold   |NN const U8 *p|NN U8* ustrp|NULLOK STRLEN *lenp
+                               |NN U8* ustrp|NULLOK STRLEN *lenp|bool flags
 Cp     |UV     |_to_utf8_fold_flags|NN const U8 *p|NULLOK const U8 *e          \
-                               |NN U8* ustrp|NULLOK STRLEN *lenp|U8 flags  \
-                               |NN const char * const file|const int line
+                               |NN U8* ustrp|NULLOK STRLEN *lenp|U8 flags
 #if defined(PERL_IN_MG_C) || defined(PERL_IN_PP_C)
 pT     |bool   |translate_substr_offsets|STRLEN curlen|IV pos1_iv \
                                         |bool pos1_is_uv|IV len_iv \
@@ -2099,7 +2070,7 @@ Adm       |U8*    |uvchr_to_utf8  |NN U8 *d|UV uv
 Cp     |U8*    |uvuni_to_utf8  |NN U8 *d|UV uv
 Adm    |U8*    |uvchr_to_utf8_flags    |NN U8 *d|UV uv|UV flags
 Admx   |U8*    |uvchr_to_utf8_flags_msgs|NN U8 *d|UV uv|UV flags|NULLOK HV ** msgs
-CMpod  |U8*    |uvoffuni_to_utf8_flags |NN U8 *d|UV uv|const UV flags
+CMp  |U8*    |uvoffuni_to_utf8_flags |NN U8 *d|UV uv|const UV flags
 Cp     |U8*    |uvoffuni_to_utf8_flags_msgs|NN U8 *d|UV uv|const UV flags|NULLOK HV** msgs
 Cdp    |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
@@ -2317,7 +2288,9 @@ Ap        |void   |sys_intern_dup |NN struct interp_intern* src|NN struct interp_intern*
 #  endif
 #endif
 
-Admop  |const XOP *    |custom_op_xop  |NN const OP *o
+: The reason for the 'u' flag is that this passes "aTHX_ x" to its callee: not
+: a legal C parameter
+Admu   |const XOP *    |Perl_custom_op_xop     |NN const OP *o
 AbpRdD |const char *   |custom_op_name |NN const OP *o
 AbpRdD |const char *   |custom_op_desc |NN const OP *o
 pRX    |XOPRETANY      |custom_op_get_field    |NN const OP *o|const xop_flags_enum field
@@ -2332,9 +2305,9 @@ Adp       |int    |nothreadhook
 p      |void   |init_constants
 
 #if defined(PERL_IN_DOOP_C)
-SR     |Size_t |do_trans_simple        |NN SV * const sv
-SR     |Size_t |do_trans_count         |NN SV * const sv
-SR     |Size_t |do_trans_complex       |NN SV * const sv
+SR     |Size_t |do_trans_simple        |NN SV * const sv|NN const OPtrans_map * const tbl
+SR     |Size_t |do_trans_count         |NN SV * const sv|NN const OPtrans_map * const tbl
+SR     |Size_t |do_trans_complex       |NN SV * const sv|NN const OPtrans_map * const tbl
 SR     |Size_t |do_trans_simple_utf8   |NN SV * const sv
 SR     |Size_t |do_trans_count_utf8    |NN SV * const sv
 SR     |Size_t |do_trans_complex_utf8  |NN SV * const sv
@@ -3029,8 +3002,9 @@ EdXxp     |bool   |validate_proto |NN SV *name|NULLOK SV *proto|bool warn \
                |bool curstash
 
 #if defined(PERL_IN_UNIVERSAL_C)
-S      |bool   |isa_lookup     |NN HV *stash|NN const char * const name \
+SG     |bool   |isa_lookup     |NULLOK HV *stash|NULLOK SV *namesv|NULLOK const char * name \
                                         |STRLEN len|U32 flags
+SG   |bool   |sv_derived_from_svpvn  |NULLOK SV *sv|NULLOK SV *namesv|NULLOK const char * name|STRLEN len|U32 flags
 #endif
 
 #if defined(PERL_IN_LOCALE_C)
@@ -3117,10 +3091,8 @@ SR       |UV     |check_locale_boundary_crossing                             \
                |NN U8* const ustrp                                         \
                |NN STRLEN *lenp
 iR     |bool   |is_utf8_common |NN const U8 *const p                       \
+                               |NN const U8 *const e                       \
                                |NULLOK SV* const invlist
-iR     |bool   |is_utf8_common_with_len|NN const U8 *const p               \
-                                       |NN const U8 *const e               \
-                                       |NULLOK SV* const invlist
 SR     |SV*    |swatch_get     |NN SV* swash|UV start|UV span
 SR     |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               \
@@ -3140,14 +3112,14 @@ Amd     |STRLEN |sv_utf8_upgrade_flags|NN SV *const sv|const I32 flags
 Adp    |STRLEN |sv_utf8_upgrade_flags_grow|NN SV *const sv|const I32 flags|STRLEN extra
 Apd    |char*  |sv_pvn_force_flags|NN SV *const sv|NULLOK STRLEN *const lp|const I32 flags
 AdpMb  |void   |sv_copypv      |NN SV *const dsv|NN SV *const ssv
-Apmd   |void   |sv_copypv_nomg |NN SV *const dsv|NN SV *const ssv
+Amd    |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
 Cpo    |char*  |my_atof2       |NN const char *orig|NN NV* value
 Cp     |char*  |my_atof3       |NN const char *orig|NN NV* value|const STRLEN len
 ApT    |int    |my_socketpair  |int family|int type|int protocol|int fd[2]
 ApT    |int    |my_dirfd       |NULLOK DIR* dir
 #ifdef PERL_ANY_COW
-: Used in pp_hot.c and regexec.c
+: Used in regexec.c
 pxXE   |SV*    |sv_setsv_cow   |NULLOK SV* dstr|NN SV* sstr
 #endif
 
@@ -3341,8 +3313,8 @@ ApoP      |bool   |ckwarn_d       |U32 w
 XEopxR |STRLEN *|new_warnings_bitfield|NULLOK STRLEN *buffer \
                                |NN const char *const bits|STRLEN size
 
-AMpTodf        |int    |my_snprintf    |NN char *buffer|const Size_t len|NN const char *format|...
-AMpTod |int    |my_vsnprintf   |NN char *buffer|const Size_t len|NN const char *format|va_list ap
+AMpTdf |int    |my_snprintf    |NN char *buffer|const Size_t len|NN const char *format|...
+AMpT |int    |my_vsnprintf   |NN char *buffer|const Size_t len|NN const char *format|va_list ap
 #ifdef USE_QUADMATH
 ApTd   |const char*    |quadmath_format_single|NN const char* format
 ApTd   |bool|quadmath_format_needed|NN const char* format
@@ -3455,10 +3427,6 @@ ATop     |void   |clone_params_del|NN CLONE_PARAMS *param
 : Used in perl.c and toke.c
 op     |void   |populate_isa   |NN const char *name|STRLEN len|...
 
-: Used in keywords.c and toke.c
-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)
@@ -3472,6 +3440,7 @@ Apx       |void   |leave_adjust_stacks|NN SV **from_sp|NN SV **to_sp \
                 |U8 gimme|int filter
 
 #ifndef PERL_NO_INLINE_FUNCTIONS
+Aixp   |U8     |gimme_V         |
 Aixp   |PERL_CONTEXT * |cx_pushblock|U8 type|U8 gimme|NN SV** sp|I32 saveix
 Aixp   |void   |cx_popblock|NN PERL_CONTEXT *cx
 Aixp   |void   |cx_topblock|NN PERL_CONTEXT *cx