This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Remove the non-inline function S_croak_memory_wrap from inline.h.
[perl5.git] / embed.fnc
index 3eb0084..ecdde73 100644 (file)
--- a/embed.fnc
+++ b/embed.fnc
 :
 : flags are single letters with following meanings:
 :
-:   A  Member of public API:
+:   A  Available fully everywhere (usually part of the public API):
 :
 :         add entry to the list of exported symbols (unless x or m);
-:         any doc entry goes in perlapi.pod rather than perlintern.pod
+:         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
+:           function is listed in perlapi as existing and being undocumented
 :         makes '#define foo Perl_foo' scope not just for PERL_CORE/PERL_EXT
 :
+:      If the function is only exported for use in a public
+:      macro, see X.
+:
 :   a  Allocates memory a la malloc/calloc.  Also implies "R":
 :
 :         proto.h: add __attribute__malloc__
 :
 :   b  Binary backward compatibility; function is a macro
 :      but has also Perl_ implementation (which is exported); often
-:      implemented in mathoms.c:
+:      implemented in mathoms.c (whose compilation can be suppressed; see
+:      INSTALL):
 :
 :         add entry to the list of exported symbols;
 :         don't define PERL_ARGS_ASSERT_FOO
@@ -43,7 +51,8 @@
 :      Should always be combined with "X" to be usable from dynamically
 :      loaded extensions.
 :
-:   f  Function takes printf style format string, varargs:
+:   f  Function takes printf style format string, varargs (hence any entry that
+:      would otherwise go in embed.h is suppressed):
 :
 :         proto.h: add __attribute__format__ (or ...null_ok__)
 :
 :
 :         add entry to the list of exported symbols, unless x or m
 :
+:      This is often used for private functions that are used by public
+:      macros.  In those cases the macros must use the long form of the
+:      name (Perl_blah(aTHX_ ...)).
+:
 :   x  Not exported
 :
 :         suppress entry in the list of exported symbols
@@ -206,6 +219,8 @@ Apd |void   |av_push        |NN AV *av|NN SV *val
 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    |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
@@ -250,6 +265,8 @@ 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
 #endif
@@ -274,7 +291,7 @@ Afnp        |int    |printf_nocontext|NN const char *format|...
 p      |SV *   |core_prototype |NULLOK SV *sv|NN const char *name \
                                |const int code|NULLOK int * const opnum
 : Used in gv.c
-p      |OP *   |coresub_op     |NN SV *coreargssv|const int code \
+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\
@@ -514,7 +531,7 @@ Ap  |void*  |hv_common_key_len|NULLOK HV *hv|NN const char *key \
                                |I32 klen_i32|const int action|NULLOK SV *val \
                                |const U32 hash
 Apod   |STRLEN |hv_fill        |NN HV const *const hv
-Ap     |void   |hv_free_ent    |NN HV *hv|NULLOK HE *entryK
+Ap     |void   |hv_free_ent    |NN HV *hv|NULLOK HE *entry
 Apd    |I32    |hv_iterinit    |NN HV *hv
 ApdR   |char*  |hv_iterkey     |NN HE* entry|NN I32* retlen
 ApdR   |SV*    |hv_iterkeysv   |NN HE* entry
@@ -590,25 +607,28 @@ pR        |OP*    |invert         |NULLOK OP* cmd
 ApR    |I32    |is_lvalue_sub
 : Used in cop.h
 XopR   |I32    |was_lvalue_sub
-ApPR   |U32    |to_uni_upper_lc|U32 c
-ApPR   |U32    |to_uni_title_lc|U32 c
-ApPR   |U32    |to_uni_lower_lc|U32 c
-ApPR   |bool   |is_uni_alnum   |UV c
-ApPR   |bool   |is_uni_idfirst |UV c
-ApPR   |bool   |is_uni_alpha   |UV c
-ApPR   |bool   |is_uni_ascii   |UV c
-ApPR   |bool   |is_uni_blank   |UV c
-ApPR   |bool   |is_uni_space   |UV c
-ApPR   |bool   |is_uni_cntrl   |UV c
-ApPR   |bool   |is_uni_graph   |UV c
-ApPR   |bool   |is_uni_digit   |UV c
-ApPR   |bool   |is_uni_upper   |UV c
-ApPR   |bool   |is_uni_lower   |UV c
-ApPR   |bool   |is_uni_print   |UV c
-ApPR   |bool   |is_uni_punct   |UV c
-ApPR   |bool   |is_uni_xdigit  |UV c
-Ap     |UV     |to_uni_upper   |UV c|NN U8 *p|NN STRLEN *lenp
-Ap     |UV     |to_uni_title   |UV c|NN U8 *p|NN STRLEN *lenp
+ADMpPR |U32    |to_uni_upper_lc|U32 c
+ADMpPR |U32    |to_uni_title_lc|U32 c
+ADMpPR |U32    |to_uni_lower_lc|U32 c
+ADMpPR |bool   |is_uni_alnum   |UV c
+ADMpPR |bool   |is_uni_alnumc  |UV c
+ADMpPR |bool   |is_uni_idfirst |UV c
+ADMpPR |bool   |is_uni_alpha   |UV c
+ADMpPR |bool   |is_uni_ascii   |UV c
+ADMpPR |bool   |is_uni_blank   |UV c
+ADMpPR |bool   |is_uni_space   |UV c
+ADMpPR |bool   |is_uni_cntrl   |UV c
+ADMpPR |bool   |is_uni_graph   |UV c
+ADMpPR |bool   |is_uni_digit   |UV c
+ADMpPR |bool   |is_uni_upper   |UV c
+ADMpPR |bool   |is_uni_lower   |UV c
+ADMpPR |bool   |is_uni_print   |UV c
+ADMpPR |bool   |is_uni_punct   |UV c
+ADMpPR |bool   |is_uni_xdigit  |UV c
+AMp    |UV     |to_uni_upper   |UV c|NN U8 *p|NN STRLEN *lenp
+AMp    |UV     |to_uni_title   |UV c|NN U8 *p|NN STRLEN *lenp
+iDMPR  |bool   |isIDFIRST_lazy |NN const char* p
+iDMPR  |bool   |isALNUM_lazy   |NN const char* p
 #ifdef PERL_IN_UTF8_C
 sR     |U8     |to_lower_latin1|const U8 c|NULLOK U8 *p|NULLOK STRLEN *lenp
 #endif
@@ -618,52 +638,59 @@ EXp        |UV        |_to_fold_latin1|const U8 c|NN U8 *p|NN STRLEN *lenp|const
 #if defined(PERL_IN_UTF8_C) || defined(PERL_IN_PP_C)
 p      |UV     |_to_upper_title_latin1|const U8 c|NN U8 *p|NN STRLEN *lenp|const char S_or_s
 #endif
-A    |UV     |to_uni_lower   |UV c|NN U8 *p|NN STRLEN *lenp
-Amp    |UV     |to_uni_fold    |UV c|NN U8 *p|NN STRLEN *lenp
+AMp    |UV     |to_uni_lower   |UV c|NN U8 *p|NN STRLEN *lenp
+AMmp   |UV     |to_uni_fold    |UV c|NN U8 *p|NN STRLEN *lenp
 AMp    |UV     |_to_uni_fold_flags|UV c|NN U8 *p|NN STRLEN *lenp|const U8 flags
-ApPR   |bool   |is_uni_alnum_lc|UV c
-ApPR   |bool   |is_uni_idfirst_lc|UV c
-ApPR   |bool   |is_uni_alpha_lc|UV c
-ApPR   |bool   |is_uni_ascii_lc|UV c
-ApPR   |bool   |is_uni_space_lc|UV c
-ApPR   |bool   |is_uni_cntrl_lc|UV c
-ApPR   |bool   |is_uni_graph_lc|UV c
-ApPR   |bool   |is_uni_digit_lc|UV c
-ApPR   |bool   |is_uni_upper_lc|UV c
-ApPR   |bool   |is_uni_lower_lc|UV c
-ApPR   |bool   |is_uni_print_lc|UV c
-ApPR   |bool   |is_uni_punct_lc|UV c
-ApPR   |bool   |is_uni_xdigit_lc|UV c
+ADMpPR |bool   |is_uni_alnum_lc|UV c
+ADMpPR |bool   |is_uni_alnumc_lc|UV c
+ADMpPR |bool   |is_uni_idfirst_lc|UV c
+AMpR   |bool   |_is_uni_perl_idcont|UV c
+AMpR   |bool   |_is_uni_perl_idstart|UV c
+ADMpPR |bool   |is_uni_alpha_lc|UV c
+ADMpPR |bool   |is_uni_ascii_lc|UV c
+ADMpPR |bool   |is_uni_space_lc|UV c
+ADMpPR |bool   |is_uni_blank_lc|UV c
+ADMpPR |bool   |is_uni_cntrl_lc|UV c
+ADMpPR |bool   |is_uni_graph_lc|UV c
+ADMpPR |bool   |is_uni_digit_lc|UV c
+ADMpPR |bool   |is_uni_upper_lc|UV c
+ADMpPR |bool   |is_uni_lower_lc|UV c
+ADMpPR |bool   |is_uni_print_lc|UV c
+ADMpPR |bool   |is_uni_punct_lc|UV c
+ADMpPR |bool   |is_uni_xdigit_lc|UV c
 Anpd   |bool   |is_ascii_string|NN const U8 *s|STRLEN len
 AnpdD  |STRLEN |is_utf8_char   |NN const U8 *s
 Anpd   |STRLEN |is_utf8_char_buf|NN const U8 *buf|NN const U8 *buf_end
 Anpd   |bool   |is_utf8_string |NN const U8 *s|STRLEN len
 Anpdmb |bool   |is_utf8_string_loc|NN const U8 *s|STRLEN len|NULLOK const U8 **ep
 Anpd   |bool   |is_utf8_string_loclen|NN const U8 *s|STRLEN len|NULLOK const U8 **ep|NULLOK STRLEN *el
-ApR    |bool   |is_utf8_alnum  |NN const U8 *p
-ApR    |bool   |is_utf8_idfirst|NN const U8 *p
-ApR    |bool   |is_utf8_xidfirst|NN const U8 *p
-EXpR   |bool   |_is_utf8__perl_idstart|NN const U8 *p
-ApR    |bool   |is_utf8_idcont |NN const U8 *p
-ApR    |bool   |is_utf8_xidcont        |NN const U8 *p
-ApR    |bool   |is_utf8_alpha  |NN const U8 *p
-ApR    |bool   |is_utf8_ascii  |NN const U8 *p
-ApR    |bool   |is_utf8_blank  |NN const U8 *p
-ApR    |bool   |is_utf8_space  |NN const U8 *p
-ApR    |bool   |is_utf8_perl_space     |NN const U8 *p
-ApR    |bool   |is_utf8_perl_word      |NN const U8 *p
-ApR    |bool   |is_utf8_cntrl  |NN const U8 *p
-ApR    |bool   |is_utf8_digit  |NN const U8 *p
-ApR    |bool   |is_utf8_posix_digit    |NN const U8 *p
-ApR    |bool   |is_utf8_graph  |NN const U8 *p
-ApR    |bool   |is_utf8_upper  |NN const U8 *p
-ApR    |bool   |is_utf8_lower  |NN const U8 *p
-ApR    |bool   |is_utf8_print  |NN const U8 *p
-ApR    |bool   |is_utf8_punct  |NN const U8 *p
-ApR    |bool   |is_utf8_xdigit |NN const U8 *p
-ApR    |bool   |is_utf8_mark   |NN const U8 *p
-EXpR   |bool   |is_utf8_X_extend       |NN const U8 *p
-EXpR   |bool   |is_utf8_X_regular_begin|NN const U8 *p
+AMpR   |bool   |_is_uni_FOO|const U8 classnum|const UV c
+AMpR   |bool   |_is_utf8_FOO|const U8 classnum|NN const U8 *p
+ADMpR  |bool   |is_utf8_alnum  |NN const U8 *p
+ADMpR  |bool   |is_utf8_alnumc |NN const U8 *p
+ADMpR  |bool   |is_utf8_idfirst|NN const U8 *p
+ADMpR  |bool   |is_utf8_xidfirst|NN const U8 *p
+AMpR   |bool   |_is_utf8_perl_idcont|NN const U8 *p
+AMpR   |bool   |_is_utf8_perl_idstart|NN const U8 *p
+ADMpR  |bool   |is_utf8_idcont |NN const U8 *p
+ADMpR  |bool   |is_utf8_xidcont        |NN const U8 *p
+ADMpR  |bool   |is_utf8_alpha  |NN const U8 *p
+ADMpR  |bool   |is_utf8_ascii  |NN const U8 *p
+ADMpR  |bool   |is_utf8_blank  |NN const U8 *p
+ADMpR  |bool   |is_utf8_space  |NN const U8 *p
+ADMpR  |bool   |is_utf8_perl_space     |NN const U8 *p
+ADMpR  |bool   |is_utf8_perl_word      |NN const U8 *p
+ADMpR  |bool   |is_utf8_cntrl  |NN const U8 *p
+ADMpR  |bool   |is_utf8_digit  |NN const U8 *p
+ADMpR  |bool   |is_utf8_posix_digit    |NN const U8 *p
+ADMpR  |bool   |is_utf8_graph  |NN const U8 *p
+ADMpR  |bool   |is_utf8_upper  |NN const U8 *p
+ADMpR  |bool   |is_utf8_lower  |NN const U8 *p
+ADMpR  |bool   |is_utf8_print  |NN const U8 *p
+ADMpR  |bool   |is_utf8_punct  |NN const U8 *p
+ADMpR  |bool   |is_utf8_xdigit |NN const U8 *p
+AMpR   |bool   |_is_utf8_mark  |NN const U8 *p
+ADMpR  |bool   |is_utf8_mark   |NN const U8 *p
 : Used in perly.y
 p      |OP*    |jmaybe         |NN OP *o
 : Used in pp.c 
@@ -713,10 +740,22 @@ Ap        |void   |vload_module|U32 flags|NN SV* name|NULLOK SV* ver|NULLOK va_list* args
 p      |OP*    |localize       |NN OP *o|I32 lex
 ApdR   |I32    |looks_like_number|NN SV *const sv
 Apd    |UV     |grok_bin       |NN const char* start|NN STRLEN* len_p|NN I32* flags|NULLOK NV *result
-#ifdef PERL_IN_DQUOTE_STATIC_C
+#if defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_TOKE_C)
 EMsR   |char   |grok_bslash_c  |const char source|const bool utf8|const bool output_warning
-EMsR   |bool   |grok_bslash_o  |NN const char* s|NN UV* uv|NN STRLEN* len|NN const char** error_msg|const bool output_warning
-EMiR   |bool   |grok_bslash_x  |NN const char* s|NN UV* uv|NN STRLEN* len|NN const char** error_msg|const bool output_warning
+EMsR   |bool   |grok_bslash_o  |NN char** s|NN UV* uv           \
+                               |NN const char** error_msg       \
+                               |const bool output_warning       \
+                               |const bool strict               \
+                               |const bool silence_non_portable \
+                               |const bool utf8
+EMiR   |bool   |grok_bslash_x  |NN char** s|NN UV* uv           \
+                               |NN const char** error_msg       \
+                               |const bool output_warning       \
+                               |const bool strict               \
+                               |const bool silence_non_portable \
+                               |const bool utf8
+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
 Apd    |int    |grok_number    |NN const char *pv|STRLEN len|NULLOK UV *valuep
@@ -748,7 +787,13 @@ p  |int    |magic_getvec   |NN SV* sv|NN MAGIC* mg
 p      |int    |magic_nextpack |NN SV *sv|NN MAGIC *mg|NN SV *key
 p      |U32    |magic_regdata_cnt|NN SV* sv|NN MAGIC* mg
 p      |int    |magic_regdatum_get|NN SV* sv|NN MAGIC* mg
+:removing noreturn to silence a warning for this function resulted in no
+:change to the interpreter DLL image under VS 2003 -O1 -GL 32 bits
+#ifdef _MSC_VER
+p      |int    |magic_regdatum_set|NN SV* sv|NN MAGIC* mg
+#else
 pr     |int    |magic_regdatum_set|NN SV* sv|NN MAGIC* mg
+#endif
 p      |int    |magic_set      |NN SV* sv|NN MAGIC* mg
 p      |int    |magic_setarylen|NN SV* sv|NN MAGIC* mg
 p      |int    |magic_cleararylen_p|NN SV* sv|NN MAGIC* mg
@@ -1062,7 +1107,7 @@ Ap        |REGEXP*|pregcomp       |NN SV * const pattern|const U32 flags
 p      |REGEXP*|re_op_compile  |NULLOK SV ** const patternp \
                                |int pat_count|NULLOK OP *expr \
                                |NN const regexp_engine* eng \
-                               |NULLOK REGEXP *VOL old_re \
+                               |NULLOK REGEXP *old_re \
                                |NULLOK bool *is_bare_re \
                                |U32 rx_flags|U32 pm_flags
 Ap     |REGEXP*|re_compile     |NN SV * const pattern|U32 orig_rx_flags
@@ -1070,8 +1115,9 @@ Ap        |char*  |re_intuit_start|NN REGEXP * const rx|NULLOK SV* sv|NN char* strpos \
                                |NN char* strend|const U32 flags \
                                |NULLOK re_scream_pos_data *data
 Ap     |SV*    |re_intuit_string|NN REGEXP  *const r
-#if defined(PERL_IN_DQUOTE_STATIC_C)
-EiPR   |I32    |regcurly       |NN const char *s
+#if defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_TOKE_C)
+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 \
@@ -1292,9 +1338,7 @@ ApdR      |bool   |sv_does_pvn    |NN SV* sv|NN const char *const name|const STRLEN len \
 Amd    |I32    |sv_eq          |NULLOK SV* sv1|NULLOK SV* sv2
 Apd    |I32    |sv_eq_flags    |NULLOK SV* sv1|NULLOK SV* sv2|const U32 flags
 Apd    |void   |sv_free        |NULLOK SV *const sv
-: FIXME Used in SvREFCNT_dec() but only
-: if defined(__GNUC__) && !defined(PERL_GCC_BRACE_GROUPS_FORBIDDEN)
-poMX   |void   |sv_free2       |NN SV *const sv
+poMX   |void   |sv_free2       |NN SV *const sv|const U32 refcnt
 : Used only in perl.c
 pd     |void   |sv_free_arenas
 Apd    |char*  |sv_gets        |NN SV *const sv|NN PerlIO *const fp|I32 append
@@ -1392,10 +1436,12 @@ 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
 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
 #endif
 #if defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_UTF8_C)
@@ -1424,6 +1470,7 @@ 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
 Ap     |void   |taint_env
 Ap     |void   |taint_proper   |NULLOK const char* f|NN const char *const s
@@ -1509,7 +1556,7 @@ p |I32    |wait4pid       |Pid_t pid|NN int* statusp|int flags
 p      |U32    |parse_unicode_opts|NN const char **popt
 Ap     |U32    |seed
 : Only used in perl.c
-pR     |UV     |get_hash_seed
+p        |void        |get_hash_seed        |NN unsigned char *seed_buffer
 : Used in doio.c, pp_hot.c, pp_sys.c
 p      |void   |report_evil_fh |NULLOK const GV *gv
 : Used in doio.c, pp_hot.c, pp_sys.c
@@ -1547,6 +1594,10 @@ p        |void   |yyunlex
 p      |int    |yyparse        |int gramtype
 : Only used in scope.c
 p      |void   |parser_free    |NN const yy_parser *parser
+#ifdef PERL_CORE
+p      |void   |parser_free_nexttoke_ops|NN yy_parser *parser \
+                                        |NN OPSLAB *slab
+#endif
 #if defined(PERL_IN_TOKE_C)
 s      |int    |yywarn         |NN const char *const s|U32 flags
 #endif
@@ -1558,7 +1609,6 @@ 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
@@ -1719,16 +1769,17 @@ po      |SV*    |hfree_next_entry       |NN HV *hv|NN STRLEN *indexp
 #endif
 
 #if defined(PERL_IN_HV_C)
-s      |void   |hsplit         |NN HV *hv
+s      |void   |hsplit         |NN HV *hv|STRLEN const oldsize|STRLEN newsize
 s      |void   |hfreeentries   |NN HV *hv
-s      |SV*    |hv_free_ent_ret|NN HV *hv|NULLOK HE *entryK
+s      |SV*    |hv_free_ent_ret|NN HV *hv|NN HE *entry
 sa     |HE*    |new_he
 sanR   |HEK*   |save_hek_flags |NN const char *str|I32 len|U32 hash|int flags
 sn     |void   |hv_magic_check |NN HV *hv|NN bool *needs_copy|NN bool *needs_store
 s      |void   |unshare_hek_or_pvn|NULLOK const HEK* hek|NULLOK const char* str|I32 len|U32 hash
 sR     |HEK*   |share_hek_flags|NN const char *str|I32 len|U32 hash|int flags
 rs     |void   |hv_notallowed  |int flags|NN const char *key|I32 klen|NN const char *msg
-sn     |struct xpvhv_aux*|hv_auxinit|NN HV *hv
+sn      |U32|ptr_hash|PTRV u
+s      |struct xpvhv_aux*|hv_auxinit|NN HV *hv
 sM     |SV*    |hv_delete_common|NULLOK HV *hv|NULLOK SV *keysv \
                |NULLOK const char *key|STRLEN klen|int k_flags|I32 d_flags \
                |U32 hash
@@ -1749,11 +1800,7 @@ s        |void   |unwind_handler_stack|NULLOK const void *p
 #if defined(PERL_IN_OP_C)
 sRn    |bool   |is_handle_constructor|NN const OP *o|I32 numargs
 sR     |I32    |is_list_assignment|NULLOK const OP *o
-#  ifdef USE_ITHREADS
-so     |void   |forget_pmop    |NN PMOP *const o|U32 flags
-#  else
-so     |void   |forget_pmop    |NN PMOP *const o
-#  endif
+s      |void   |forget_pmop    |NN PMOP *const o
 s      |void   |find_and_forget_pmops  |NN OP *o
 s      |void   |cop_free       |NN COP *cop
 s      |OP*    |modkids        |NULLOK OP *o|I32 type
@@ -1888,7 +1935,7 @@ s |OP*    |do_smartmatch  |NULLOK HV* seen_this \
 #endif
 
 #if defined(PERL_IN_PP_HOT_C)
-s      |void   |do_oddball     |NN HV *hash|NN SV **relem|NN SV **firstrelem
+s      |void   |do_oddball     |NN SV **oddkey|NN SV **firstkey
 sR     |SV*    |method_common  |NN SV* meth|NULLOK U32* hashp
 #endif
 
@@ -1928,14 +1975,24 @@ Es      |regnode*|regbranch     |NN struct RExC_state_t *pRExC_state \
 Es     |STRLEN |reguni         |NN const struct RExC_state_t *pRExC_state \
                                |UV uv|NN char *s
 Es     |regnode*|regclass      |NN struct RExC_state_t *pRExC_state \
-                               |NN I32 *flagp|U32 depth
+                               |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 \
+                               |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     |UV     |reg_recode     |const char value|NN SV **encp
 Es     |regnode*|regpiece      |NN struct RExC_state_t *pRExC_state \
                                |NN I32 *flagp|U32 depth
-Es     |bool   |grok_bslash_N  |NN struct RExC_state_t *pRExC_state \
-                               |NULLOK regnode** nodep|NULLOK UV *valuep \
-                               |NN I32 *flagp|U32 depth|bool in_char_class
+Es     |bool   |grok_bslash_N  |NN struct 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 \
                                |U8 op|NN regnode *opnd|U32 depth
 Es     |void   |regtail        |NN struct RExC_state_t *pRExC_state \
@@ -1948,6 +2005,8 @@ Es        |U32    |join_exact     |NN struct RExC_state_t *pRExC_state \
                                |U32 flags|NULLOK regnode *val|U32 depth
 EsRn   |char * |regwhite       |NN struct RExC_state_t *pRExC_state \
                                |NN char *p
+EsRn   |char * |regpatws       |NN struct 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 \
                                |NN regnode *node|NN I32 *flagp|STRLEN len \
                                |UV code_point
@@ -1977,8 +2036,8 @@ Es        |I32    |study_chunk    |NN struct RExC_state_t *pRExC_state \
 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|...
-Es     |I32    |regpposixcc    |NN struct RExC_state_t *pRExC_state|I32 value
-Es     |void   |checkposixcc   |NN struct RExC_state_t *pRExC_state
+Ei     |I32    |regpposixcc    |NN struct RExC_state_t *pRExC_state \
+                               |I32 value|const bool strict
 Es     |I32    |make_trie      |NN struct RExC_state_t *pRExC_state \
                                |NN regnode *startbranch|NN regnode *first \
                                |NN regnode *last|NN regnode *tail \
@@ -2009,25 +2068,32 @@ Es      |U8     |regtail_study  |NN struct RExC_state_t *pRExC_state \
 #endif
 
 #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    |I32    |regrepeat      |NN const regexp *prog|NN char **startposp|NN const regnode *p|I32 max|int depth
+ERs    |I32    |regrepeat      |NN regexp *prog|NN char **startposp \
+                               |NN const regnode *p|I32 max|int depth \
+                               |bool is_utf8_pat
 ERs    |I32    |regtry         |NN regmatch_info *reginfo|NN char **startposp
-ERs    |bool   |reginclass     |NULLOK const regexp * const prog|NN const regnode * const n|NN const U8 * const p\
+ERs    |bool   |reginclass     |NULLOK regexp * const prog|NN const regnode * const n|NN const U8 * const p\
                                |bool const utf8_target
-Es     |CHECKPOINT|regcppush   |NN const regexp *rex|I32 parenfloor
-Es     |void   |regcppop       |NN regexp *rex
+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
 ERsM   |SV*    |core_regclass_swash|NULLOK const regexp *prog \
                                |NN const struct regnode *node|bool doinit \
                                |NULLOK SV **listsvp
-:not currently used EiR        |bool   |is_utf8_X_LV           |NN const U8 *p
-EiR    |bool   |is_utf8_X_LVT          |NN const U8 *p
 #ifdef XXX_dmq
 ERsn   |U8*    |reghop4        |NN U8 *s|I32 off|NN const U8 *llim \
                                |NN const U8 *rlim
 #endif
 ERsn   |U8*    |reghopmaybe3   |NN U8 *s|I32 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
+ERs    |char*  |find_byclass   |NN regexp * prog|NN const regnode *c \
+                               |NN char *s|NN const char *strend \
+                               |NULLOK regmatch_info *reginfo \
+                               |bool is_utf_pat
 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 \
@@ -2137,7 +2203,8 @@ s |char*  |scan_ident     |NN char *s|NN const char *send|NN char *dest \
 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
+                               |int keep_delims|int re_reparse \
+                               |bool deprecate_escaped_matching
 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 \
@@ -2173,6 +2240,9 @@ so        |SV*    |new_constant   |NULLOK const char *s|STRLEN len \
                                |STRLEN typelen
 s      |int    |deprecate_commaless_var_list
 s      |int    |ao             |int toketype
+s  |void|parse_ident|NN char **s|NN char **d \
+                     |NN char * const e|int allow_package \
+                     |bool is_utf8
 #  if defined(PERL_CR_FILTER)
 s      |I32    |cr_textfilter  |int idx|NULLOK SV *sv|int maxlen
 s      |void   |strip_return   |NN SV *sv
@@ -2213,9 +2283,9 @@ sn        |NV|mulexp10    |NV value|I32 exponent
 #endif
 
 #if defined(PERL_IN_UTF8_C)
-sRn    |STRLEN |is_utf8_char_slow|NN const U8 *s|const STRLEN len
+iRn    |STRLEN |is_utf8_char_slow|NN const U8 *s|const STRLEN len
 sRM    |UV     |check_locale_boundary_crossing|NN const U8* const p|const UV result|NN U8* const ustrp|NN STRLEN *lenp
-sR     |bool   |is_utf8_common |NN const U8 *const p|NN SV **swash|NN const char * const swashname
+iR     |bool   |is_utf8_common |NN const U8 *const p|NN SV **swash|NN const char * const swashname
 sR     |SV*    |swatch_get     |NN SV* swash|UV start|UV span
 #endif
 
@@ -2234,7 +2304,7 @@ 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
-#ifdef PERL_OLD_COPY_ON_WRITE
+#ifdef PERL_ANY_COW
 : Used in pp_hot.c and regexec.c
 pMXE   |SV*    |sv_setsv_cow   |NULLOK SV* dstr|NN SV* sstr
 #endif