This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Upgrade to version.pm 0.71, by John Peacock
[perl5.git] / embed.fnc
index 1d98dff..1686b3c 100644 (file)
--- a/embed.fnc
+++ b/embed.fnc
@@ -106,11 +106,13 @@ Apd       |void   |av_fill        |NN AV* ar|I32 fill
 ApdR   |I32    |av_len         |NN const AV* ar
 ApdR   |AV*    |av_make        |I32 size|NN SV** svp
 Apd    |SV*    |av_pop         |NN AV* ar
+ApdoxM |void   |av_create_and_push|NN AV **const avp|NN SV *const val
 Apd    |void   |av_push        |NN AV* ar|NN SV* val
 p      |void   |av_reify       |NN AV* ar
 ApdR   |SV*    |av_shift       |NN AV* ar
 Apd    |SV**   |av_store       |NN AV* ar|I32 key|NULLOK SV* val
 Apd    |void   |av_undef       |NN AV* ar
+ApdoxM |SV**   |av_create_and_unshift_one|NN AV **const avp|NN SV *const val
 Apd    |void   |av_unshift     |NN AV* ar|I32 num
 Apo    |SV**   |av_arylen_p    |NN AV* av
 pR     |OP*    |bind_match     |I32 type|NN OP* left|NN OP* pat
@@ -188,7 +190,7 @@ pmb |bool   |do_aexec       |NULLOK SV* really|NN SV** mark|NN SV** sp
 p      |bool   |do_aexec5      |NULLOK SV* really|NN SV** mark|NN SV** sp|int fd|int do_report
 Ap     |int    |do_binmode     |NN PerlIO *fp|int iotype|int mode
 p      |void   |do_chop        |NN SV* asv|NN SV* sv
-Ap     |bool   |do_close       |NN GV* gv|bool not_implicit
+Ap     |bool   |do_close       |NULLOK GV* gv|bool not_implicit
 p      |bool   |do_eof         |NN GV* gv
 
 #ifdef PERL_DEFAULT_DO_EXEC3_IMPLEMENTATION
@@ -206,6 +208,9 @@ Ap  |int    |do_spawn_nowait|NN char* cmd
 p      |bool   |do_exec3       |NN const char* cmd|int fd|int do_report
 #endif
 p      |void   |do_execfree
+#ifdef PERL_IN_DOIO_C
+s      |void   |exec_failed    |NN const char *cmd|int fd|int do_report
+#endif
 #if defined(HAS_MSG) || defined(HAS_SEM) || defined(HAS_SHM)
 p      |I32    |do_ipcctl      |I32 optype|NN SV** mark|NN SV** sp
 p      |I32    |do_ipcget      |I32 optype|NN SV** mark|NN SV** sp
@@ -263,17 +268,20 @@ p |OP*    |gen_constant_list|NULLOK OP* o
 #if !defined(HAS_GETENV_LEN)
 p      |char*  |getenv_len     |NN const char* key|NN unsigned long *len
 #endif
+pox    |void   |get_db_sub     |NULLOK SV **svp|NN CV *cv
 Ap     |void   |gp_free        |NULLOK GV* gv
 Ap     |GP*    |gp_ref         |NULLOK GP* gp
 Ap     |GV*    |gv_AVadd       |NN GV* gv
 Ap     |GV*    |gv_HVadd       |NN GV* gv
 Ap     |GV*    |gv_IOadd       |NN GV* gv
 ApR    |GV*    |gv_autoload4   |NULLOK HV* stash|NN const char* name|STRLEN len|I32 method
-Ap     |void   |gv_check       |NN HV* stash
+Ap     |void   |gv_check       |NN const 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
 Ap     |GV*    |gv_fetchfile   |NN const char* name
+Ap     |GV*    |gv_fetchfile_flags|NN const char *const name|const STRLEN len\
+                               |const U32 flags
 Apd    |GV*    |gv_fetchmeth   |NULLOK HV* stash|NN const char* name|STRLEN len|I32 level
 Apd    |GV*    |gv_fetchmeth_autoload  |NULLOK HV* stash|NN const char* name|STRLEN len|I32 level
 Apdmb  |GV*    |gv_fetchmethod |NULLOK HV* stash|NN const char* name
@@ -285,9 +293,9 @@ Ap  |void   |gv_fullname4   |NN SV* sv|NN const GV* gv|NULLOK const char* prefix|bool
 pMox   |GP *   |newGP          |NN GV *const gv
 Ap     |void   |gv_init        |NN GV* gv|NULLOK HV* stash|NN const char* name|STRLEN len|int multi
 Ap     |void   |gv_name_set    |NN GV* gv|NN const char *name|U32 len|U32 flags
-Apd    |HV*    |gv_stashpv     |NN const char* name|I32 create
-Apd    |HV*    |gv_stashpvn    |NN const char* name|U32 namelen|I32 create
-Apd    |HV*    |gv_stashsv     |NULLOK SV* sv|I32 create
+Apd    |HV*    |gv_stashpv     |NN const char* name|I32 flags
+Apd    |HV*    |gv_stashpvn    |NN const char* name|U32 namelen|I32 flags
+Apd    |HV*    |gv_stashsv     |NULLOK SV* sv|I32 flags
 Apd    |void   |hv_clear       |NULLOK HV* tb
 poM    |HV *   |hv_copy_hints_hv|NN HV *const ohv
 Ap     |void   |hv_delayfree_ent|NN HV* hv|NULLOK HE* entry
@@ -307,9 +315,12 @@ ApMdR      |HE*    |hv_iternext_flags|NN HV* tb|I32 flags
 ApdR   |SV*    |hv_iterval     |NN HV* tb|NN HE* entry
 Ap     |void   |hv_ksplit      |NN HV* hv|IV newmax
 Apdbm  |void   |hv_magic       |NN HV* hv|NULLOK GV* gv|int how
-dpoM   |HV *   |refcounted_he_chain_2hv|NULLOK const struct refcounted_he *c
+XEdpoM |HV *   |refcounted_he_chain_2hv|NULLOK const struct refcounted_he *c
+XEpoM  |SV *   |refcounted_he_fetch|NULLOK const struct refcounted_he *chain \
+                               |NULLOK SV *keysv|NULLOK const char *key \
+                               |STRLEN klen, int flags, U32 hash
 dpoM   |void   |refcounted_he_free|NULLOK struct refcounted_he *he
-dpoM   |struct refcounted_he *|refcounted_he_new \
+XEdpoM |struct refcounted_he *|refcounted_he_new \
                                |NULLOK struct refcounted_he *const parent \
                                |NULLOK SV *const key|NULLOK SV *const value
 Apd    |SV**   |hv_store       |NULLOK HV* tb|NULLOK const char* key|I32 klen|NULLOK SV* val \
@@ -389,10 +400,10 @@ 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
 p      |OP*    |jmaybe         |NN OP* arg
-pP     |I32    |keyword        |NN const char* d|I32 len
+pP     |I32    |keyword        |NN const char* d|I32 len|bool all_keywords
 Ap     |void   |leave_scope    |I32 base
 p      |void   |lex_end
-p      |void   |lex_start      |NN SV* line
+p      |void   |lex_start      |NULLOK SV* line
 Ap     |void   |op_null        |NN OP* o
 p      |void   |op_clear       |NN OP* o
 Ap     |void   |op_refcnt_lock
@@ -414,7 +425,7 @@ p   |int    |magic_clear_all_env|NN SV* sv|NN MAGIC* mg
 dp     |int    |magic_clearhint|NN SV* sv|NN MAGIC* mg
 p      |int    |magic_clearpack|NN SV* sv|NN MAGIC* mg
 p      |int    |magic_clearsig |NN SV* sv|NN MAGIC* mg
-p      |int    |magic_existspack|NN SV* sv|NN MAGIC* mg
+p      |int    |magic_existspack|NN SV* sv|NN const MAGIC* mg
 p      |int    |magic_freeregexp|NN SV* sv|NN MAGIC* mg
 p      |int    |magic_freeovrld|NN SV* sv|NN MAGIC* mg
 p      |int    |magic_get      |NN SV* sv|NN MAGIC* mg
@@ -557,7 +568,9 @@ ApdaR       |HV*    |newHV
 ApaR   |HV*    |newHVhv        |NULLOK HV* hv
 Apa    |IO*    |newIO
 Apa    |OP*    |newLISTOP      |I32 type|I32 flags|NULLOK OP* first|NULLOK OP* last
-Apa    |OP*    |newPADOP       |I32 type|I32 flags|NULLOK SV* sv
+#ifdef USE_ITHREADS
+Apa    |OP*    |newPADOP       |I32 type|I32 flags|NN SV* sv
+#endif
 Apa    |OP*    |newPMOP        |I32 type|I32 flags
 Apa    |OP*    |newPVOP        |I32 type|I32 flags|NULLOK char* pv
 Apa    |SV*    |newRV          |NN SV* sv
@@ -576,6 +589,7 @@ Afpda       |SV*    |newSVpvf       |NN const char* pat|...
 Apa    |SV*    |vnewSVpvf      |NN const char* pat|NULLOK va_list* args
 Apd    |SV*    |newSVrv        |NN SV* rv|NULLOK const char* classname
 Apda   |SV*    |newSVsv        |NULLOK SV* old
+Apda   |SV*    |newSV_type     |svtype type
 Apa    |OP*    |newUNOP        |I32 type|I32 flags|NULLOK OP* first
 Apa    |OP*    |newWHENOP      |NULLOK OP* cond|NN OP* block
 Apa    |OP*    |newWHILEOP     |I32 flags|I32 debuggable|NULLOK LOOP* loop \
@@ -585,7 +599,7 @@ Apa |PERL_SI*|new_stackinfo|I32 stitems|I32 cxitems
 Ap     |char*  |scan_vstring   |NN const char *vstr|NN SV *sv
 Apd    |const char*    |scan_version   |NN const char *vstr|NN SV *sv|bool qv
 Apd    |SV*    |new_version    |NN SV *ver
-Apd    |SV*    |upg_version    |NN SV *ver
+Apd    |SV*    |upg_version    |NN SV *ver|bool qv
 Apd    |bool   |vverify        |NN SV *vs
 Apd    |SV*    |vnumify        |NN SV *vs
 Apd    |SV*    |vnormal        |NN SV *vs
@@ -632,7 +646,8 @@ Apd |I32    |eval_sv        |NN SV* sv|I32 flags
 Apd    |SV*    |get_sv         |NN const char* name|I32 create
 Apd    |AV*    |get_av         |NN const char* name|I32 create
 Apd    |HV*    |get_hv         |NN const char* name|I32 create
-Apd    |CV*    |get_cv         |NN const char* name|I32 create
+Apd    |CV*    |get_cv         |NN const char* name|I32 flags
+Apd    |CV*    |get_cvn_flags  |NN const char* name|STRLEN len|I32 flags
 Ap     |int    |init_i18nl10n  |int printwarn
 Ap     |int    |init_i18nl14n  |int printwarn
 Ap     |void   |new_collate    |NULLOK const char* newcoll
@@ -662,7 +677,13 @@ Ap |I32    |pregexec       |NN regexp* prog|NN char* stringarg \
                                |NN char* strend|NN char* strbeg|I32 minend \
                                |NN SV* screamer|U32 nosave
 Ap     |void   |pregfree       |NULLOK struct regexp* r
+Ap     |void   |regfree_internal|NULLOK struct regexp* r
+Ap     |char * |reg_stringify  |NN MAGIC *mg|NULLOK STRLEN *lp|NULLOK U32 *flags|NULLOK I32 *haseval
+#if defined(USE_ITHREADS)
+Ap     |void*  |regdupe_internal|NN const regexp* r|NN CLONE_PARAMS* param
+#endif
 Ap     |regexp*|pregcomp       |NN char* exp|NN char* xend|NN PMOP* pm
+Ap     |regexp*|re_compile     |NN char* exp|NN char* xend|NN PMOP* pm
 Ap     |char*  |re_intuit_start|NN regexp* prog|NULLOK SV* sv|NN char* strpos \
                                |NN char* strend|U32 flags \
                                |NULLOK struct re_scream_pos_data_s *data
@@ -671,6 +692,10 @@ Ap |I32    |regexec_flags  |NN regexp* prog|NN char* stringarg \
                                |NN char* strend|NN char* strbeg|I32 minend \
                                |NN SV* screamer|NULLOK void* data|U32 flags
 ApR    |regnode*|regnext       |NN regnode* p
+
+EXp    |SV*|reg_named_buff_get |NN const REGEXP * const rx|NN SV* namesv|U32 flags
+EXp    |SV*|reg_numbered_buff_get|NN const REGEXP * const rx|I32 paren|NULLOK SV* usesv
+
 Ep     |void   |regprop        |NULLOK const regexp *prog|NN SV* sv|NN const regnode* o
 Ap     |void   |repeatcpy      |NN char* to|NN const char* from|I32 len|I32 count
 ApP    |char*  |rninstr        |NN const char* big|NN const char* bigend \
@@ -688,6 +713,7 @@ p   |I32    |same_dirent    |NN const char* a|NN const char* b
 Apda   |char*  |savepv         |NULLOK const char* pv
 Apda   |char*  |savepvn        |NULLOK const char* pv|I32 len
 Apda   |char*  |savesharedpv   |NULLOK const char* pv
+Apda   |char*  |savesharedpvn  |NN const char *const pv|const STRLEN len
 Apda   |char*  |savesvpv       |NN SV* sv
 Ap     |void   |savestack_grow
 Ap     |void   |savestack_grow_cnt     |I32 need
@@ -803,6 +829,7 @@ Apd |int    |getcwd_sv      |NN SV* sv
 Apd    |void   |sv_dec         |NN SV* sv
 Ap     |void   |sv_dump        |NN SV* sv
 ApdR   |bool   |sv_derived_from|NN SV* sv|NN const char* name
+ApdR   |bool   |sv_does        |NN SV* sv|NN const char* name
 Apd    |I32    |sv_eq          |NULLOK SV* sv1|NULLOK SV* sv2
 Apd    |void   |sv_free        |NULLOK SV* sv
 poMX   |void   |sv_free2       |NN SV* sv
@@ -818,7 +845,7 @@ Apd |STRLEN |sv_len         |NULLOK SV* sv
 Apd    |STRLEN |sv_len_utf8    |NULLOK SV* sv
 Apd    |void   |sv_magic       |NN SV* sv|NULLOK SV* obj|int how|NULLOK const char* name \
                                |I32 namlen
-Apd    |MAGIC *|sv_magicext    |NN SV* sv|NULLOK SV* obj|int how|NULLOK MGVTBL *vtbl \
+Apd    |MAGIC *|sv_magicext    |NN SV* sv|NULLOK SV* obj|int how|NULLOK const MGVTBL *vtbl \
                                |NULLOK const char* name|I32 namlen
 ApdaR  |SV*    |sv_mortalcopy  |NULLOK SV* oldsv
 ApdR   |SV*    |sv_newmortal
@@ -832,7 +859,7 @@ Apd |char*  |sv_pvbyten_force|NN SV* sv|NULLOK STRLEN* lp
 Apd    |char*  |sv_recode_to_utf8      |NN SV* sv|NN SV *encoding
 Apd    |bool   |sv_cat_decode  |NN SV* dsv|NN SV *encoding|NN SV *ssv|NN int *offset \
                                |NN char* tstr|int tlen
-ApdR   |char*  |sv_reftype     |NN const SV* sv|int ob
+ApdR   |const char*    |sv_reftype     |NN const SV* sv|int ob
 Apd    |void   |sv_replace     |NN SV* sv|NN SV* nsv
 Apd    |void   |sv_report_used
 Apd    |void   |sv_reset       |NN const char* s|NULLOK HV* stash
@@ -856,7 +883,7 @@ Apd |int    |sv_unmagic     |NN SV* sv|int type
 Apdmb  |void   |sv_unref       |NN SV* sv
 Apd    |void   |sv_unref_flags |NN SV* sv|U32 flags
 Apd    |void   |sv_untaint     |NN SV* sv
-Apd    |void   |sv_upgrade     |NN SV* sv|U32 mt
+Apd    |void   |sv_upgrade     |NN SV* sv|svtype new_type
 Apdmb  |void   |sv_usepvn      |NN SV* sv|NULLOK char* ptr|STRLEN len
 Apd    |void   |sv_usepvn_flags|NN SV* sv|NULLOK char* ptr|STRLEN len\
                                |U32 flags
@@ -886,7 +913,7 @@ Apd |I32    |unpack_str     |NN const char *pat|NN const char *patend|NN const char *s
 Apd    |I32    |unpackstring   |NN const char *pat|NN const char *patend|NN const char *s \
                                |NN const char *strend|U32 flags
 Ap     |void   |unsharepvn     |NULLOK const char* sv|I32 len|U32 hash
-XEp    |void   |unshare_hek    |NULLOK HEK* hek
+p      |void   |unshare_hek    |NULLOK HEK* hek
 #ifdef PERL_MAD
 p      |OP *   |utilize        |int aver|I32 floor|NULLOK OP* version \
                                |NN OP* idop|NULLOK OP* arg
@@ -941,6 +968,7 @@ p   |void   |write_to_stderr|NN const char* message|int msglen
 p      |int    |yyerror        |NN const char* s
 p      |int    |yylex
 p      |int    |yyparse
+p      |void   |parser_free    |NN const yy_parser *
 p      |int    |yywarn         |NN const char* s
 #if defined(MYMALLOC)
 Ap     |void   |dump_mstats    |NN char* s
@@ -973,14 +1001,26 @@ Apd      |void   |sv_setpvn_mg   |NN SV *sv|NN const char *ptr|STRLEN len
 Apd    |void   |sv_setsv_mg    |NN SV *dstr|NULLOK SV *sstr
 Apdbm  |void   |sv_usepvn_mg   |NN SV *sv|NULLOK char *ptr|STRLEN len
 ApR    |MGVTBL*|get_vtbl       |int vtbl_id
-Ap     |char*  |pv_display     |NN SV *dsv|NN const char *pv|STRLEN cur|STRLEN len \
+Apd    |char*  |pv_display     |NN SV *dsv|NN const char *pv|STRLEN cur|STRLEN len \
                                |STRLEN pvlim
+Apd    |char*  |pv_escape      |NN SV *dsv|NN char const * const str\
+                                |const STRLEN count|const STRLEN max\
+                                |NULLOK STRLEN * const escaped\
+                                |const U32 flags                               
+Apd     |char*  |pv_pretty      |NN SV *dsv|NN char const * const str\
+                                |const STRLEN count|const STRLEN max\
+                                |NULLOK char const * const start_color\
+                                |NULLOK char const * const end_color\
+                                |const U32 flags                               
 Afp    |void   |dump_indent    |I32 level|NN PerlIO *file|NN const char* pat|...
 Ap     |void   |dump_vindent   |I32 level|NN PerlIO *file|NN const char* pat \
                                |NULLOK va_list *args
-Ap     |void   |do_gv_dump     |I32 level|NN PerlIO *file|NN const char *name|NN GV *sv
-Ap     |void   |do_gvgv_dump   |I32 level|NN PerlIO *file|NN const char *name|NN GV *sv
-Ap     |void   |do_hv_dump     |I32 level|NN PerlIO *file|NN const char *name|NN HV *sv
+Ap     |void   |do_gv_dump     |I32 level|NN PerlIO *file|NN const char *name\
+                               |NULLOK GV *sv
+Ap     |void   |do_gvgv_dump   |I32 level|NN PerlIO *file|NN const char *name\
+                               |NULLOK GV *sv
+Ap     |void   |do_hv_dump     |I32 level|NN PerlIO *file|NN const char *name\
+                               |NULLOK HV *sv
 Ap     |void   |do_magic_dump  |I32 level|NN PerlIO *file|NN const MAGIC *mg|I32 nest \
                                |I32 maxnest|bool dumpops|STRLEN pvlim
 Ap     |void   |do_op_dump     |I32 level|NN PerlIO *file|NULLOK const OP *o
@@ -1028,12 +1068,15 @@ ApR     |GP*    |gp_dup         |NULLOK GP* gp|NN CLONE_PARAMS* param
 ApR    |MAGIC* |mg_dup         |NULLOK MAGIC* mg|NN CLONE_PARAMS* param
 ApR    |SV*    |sv_dup         |NULLOK const SV* sstr|NN CLONE_PARAMS* param
 Ap     |void   |rvpv_dup       |NN SV* dstr|NN const SV *sstr|NN CLONE_PARAMS* param
+Ap     |yy_parser*|parser_dup  |NN const yy_parser *proto|NN CLONE_PARAMS* param
+#endif
 Apa    |PTR_TBL_t*|ptr_table_new
 ApR    |void*  |ptr_table_fetch|NN PTR_TBL_t *tbl|NN const void *sv
 Ap     |void   |ptr_table_store|NN PTR_TBL_t *tbl|NULLOK const void *oldsv|NN void *newsv
 Ap     |void   |ptr_table_split|NN PTR_TBL_t *tbl
 Ap     |void   |ptr_table_clear|NULLOK PTR_TBL_t *tbl
 Ap     |void   |ptr_table_free|NULLOK PTR_TBL_t *tbl
+#if defined(USE_ITHREADS)
 #  if defined(HAVE_INTERP_INTERN)
 Ap     |void   |sys_intern_dup |NN struct interp_intern* src|NN struct interp_intern* dst
 #  endif
@@ -1046,10 +1089,6 @@ Ap       |void   |sys_intern_init
 ApR    |char * |custom_op_name |NN const OP* op
 ApR    |char * |custom_op_desc |NN const OP* op
 
-#if defined(PERL_OLD_COPY_ON_WRITE)
-pMX    |int    |sv_release_IVX |NN SV *sv
-#endif
-
 Adp    |void   |sv_nosharing   |NULLOK SV *sv
 Adpbm  |void   |sv_nolocking   |NULLOK SV *sv
 #ifdef NO_MATHOMS
@@ -1072,11 +1111,12 @@ sR      |I32    |do_trans_complex_utf8  |NN SV * const sv
 
 #if defined(PERL_IN_GV_C) || defined(PERL_DECL_PROT)
 s      |void   |gv_init_sv     |NN GV *gv|I32 sv_type
-s      |void   |require_errno  |NN GV *gv
+s      |HV*    |require_tie_mod|NN GV *gv|NN const char *varpv|NN SV* namesv \
+                               |NN const char *methpv|const U32 flags
 #endif
 
 : #if defined(PERL_IN_HV_C) || defined(PERL_IN_SV_C) || defined(PERL_DECL_PROT)
-paRxo  |void*  |get_arena      |int svtype
+paRxo  |void*  |get_arena      |size_t svtype|U32 misc
 : #endif
 
 #if defined(PERL_IN_HV_C) || defined(PERL_DECL_PROT)
@@ -1087,6 +1127,7 @@ 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* sv|I32 len|U32 hash|int flags
+sR     |SV*    |hv_magic_uvar_xkey|NN HV* hv|NN SV* keysv|int action
 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
 sM     |SV*    |hv_delete_common|NULLOK HV* tb|NULLOK SV* keysv|NULLOK const char* key \
@@ -1094,6 +1135,7 @@ sM        |SV*    |hv_delete_common|NULLOK HV* tb|NULLOK SV* keysv|NULLOK const char* key
 sM     |HE*    |hv_fetch_common|NULLOK HV* tb|NULLOK SV* keysv|NULLOK const char* key \
                |STRLEN klen|int flags|int action|NULLOK SV* val|U32 hash
 sM     |void   |clear_placeholders     |NN HV* hb|U32 items
+sM     |SV *   |refcounted_he_value    |NN const struct refcounted_he *he
 #endif
 
 #if defined(PERL_IN_MG_C) || defined(PERL_DECL_PROT)
@@ -1138,7 +1180,6 @@ pR        |OP*    |ck_return      |NN OP *o
 pR     |OP*    |ck_rfun        |NN OP *o
 pR     |OP*    |ck_rvconst     |NN OP *o
 pR     |OP*    |ck_sassign     |NN OP *o
-pR     |OP*    |ck_say         |NN OP *o
 pR     |OP*    |ck_select      |NN OP *o
 pR     |OP*    |ck_shift       |NN OP *o
 pR     |OP*    |ck_sort        |NN OP *o
@@ -1173,6 +1214,8 @@ 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 |NN const char *const fullname\
+                                       |NN GV *const gv|NN CV *const cv
 #endif
 #if defined(PL_OP_SLAB_ALLOC)
 Apa    |void*  |Slab_Alloc     |int m|size_t sz
@@ -1209,6 +1252,10 @@ s        |SV *   |incpush_if_exists|NN SV *dir
 #if defined(PERL_IN_PP_C) || defined(PERL_DECL_PROT)
 sR     |SV*    |refto          |NN SV* sv
 #endif
+#if defined(PERL_IN_PP_C) || defined(PERL_IN_PP_HOT_C) || defined(PERL_DECL_PROT)
+pRxo   |GV*    |softref2xv     |NN SV *const sv|NN const char *const what \
+                               |const U32 type|NN SV ***spp
+#endif
 
 #if defined(PERL_IN_PP_PACK_C) || defined(PERL_DECL_PROT)
 s      |I32    |unpack_rec     |NN struct tempsym* symptr|NN const char *s \
@@ -1224,6 +1271,7 @@ sR        |const char *|get_num   |NN const char *ppat|NN I32 *lenptr
 ns     |bool   |need_utf8      |NN const char *pat|NN const char *patend
 ns     |char   |first_symbol   |NN const char *pat|NN const char *patend
 sR     |char * |sv_exp_grow    |NN SV *sv|STRLEN needed
+snR    |char * |bytes_to_uni   |NN const U8 *start|STRLEN len|NN char *dest
 #endif
 
 #if defined(PERL_IN_PP_CTL_C) || defined(PERL_DECL_PROT)
@@ -1253,7 +1301,6 @@ s |OP*    |do_smartmatch  |NULLOK HV* seen_this|NULLOK HV* seen_other
 
 #if defined(PERL_IN_PP_HOT_C) || defined(PERL_DECL_PROT)
 s      |void   |do_oddball     |NN HV *hash|NN SV **relem|NN SV **firstrelem
-sR     |CV*    |get_db_sub     |NN SV **svp|NN CV *cv
 sR     |SV*    |method_common  |NN SV* meth|NULLOK U32* hashp
 #endif
 
@@ -1267,6 +1314,7 @@ s |I32    |amagic_cmp_locale|NN SV *a|NN SV *b
 s      |I32    |sortcv         |NN SV *a|NN SV *b
 s      |I32    |sortcv_xsub    |NN SV *a|NN SV *b
 s      |I32    |sortcv_stacked |NN SV *a|NN SV *b
+s      |void   |qsortsvu       |NN SV** array|size_t num_elts|NN SVCOMPARE_t compare
 #endif
 
 #if defined(PERL_IN_PP_SYS_C) || defined(PERL_DECL_PROT)
@@ -1279,27 +1327,25 @@ s       |SV *   |space_join_names_mortal|NN char *const *array
 #endif
 
 #if defined(PERL_IN_REGCOMP_C) || defined(PERL_DECL_PROT)
-Es     |regnode*|reg           |NN struct RExC_state_t *state|I32 paren|NN I32 *flagp
+Es     |regnode*|reg           |NN struct RExC_state_t *state|I32 paren|NN I32 *flagp|U32 depth
 Es     |regnode*|reganode      |NN struct RExC_state_t *state|U8 op|U32 arg
-Es     |regnode*|regatom       |NN struct RExC_state_t *state|NN I32 *flagp
-Es     |regnode*|regbranch     |NN struct RExC_state_t *state|NN I32 *flagp|I32 first
-Es     |void   |reguni         |NN const struct RExC_state_t *state|UV uv|NN char *s|NN STRLEN *lenp
-Es     |regnode*|regclass      |NN struct RExC_state_t *state
+Es     |regnode*|regatom       |NN struct RExC_state_t *state|NN I32 *flagp|U32 depth
+Es     |regnode*|regbranch     |NN struct RExC_state_t *state|NN I32 *flagp|I32 first|U32 depth
+Es     |STRLEN |reguni         |NN const struct RExC_state_t *state|UV uv|NN char *s
+Es     |regnode*|regclass      |NN struct RExC_state_t *state|U32 depth
 ERsn   |I32    |regcurly       |NN const char *
 Es     |regnode*|reg_node      |NN struct RExC_state_t *state|U8 op
-Es     |regnode*|regpiece      |NN struct RExC_state_t *state|NN I32 *flagp
-Es     |void   |reginsert      |NN struct RExC_state_t *state|U8 op|NN regnode *opnd
-Es     |void   |regoptail      |NN const struct RExC_state_t *state|NN regnode *p|NN const regnode *val
-Es     |void   |regtail        |NN const struct RExC_state_t *state|NN regnode *p|NN const regnode *val
-EsRn   |char*  |regwhite       |NN char *p|NN const char *e
-Es     |char*  |nextchar       |NN struct RExC_state_t *state
-#  ifdef DEBUGGING
-Es     |const regnode*|dumpuntil|NN const regexp *r|NN const regnode *start \
-                               |NN const regnode *node \
-                               |NULLOK const regnode *last|NN SV* sv|I32 l
-Es     |void   |put_byte       |NN SV* sv|int c
-#  endif
-Es     |void   |scan_commit    |NN const struct RExC_state_t* state|NN struct scan_data_t *data
+Es     |UV     |reg_recode     |const char value|NULLOK SV **encp
+Es     |regnode*|regpiece      |NN struct RExC_state_t *state|NN I32 *flagp|U32 depth
+Es     |regnode*|reg_namedseq  |NN struct RExC_state_t *state|NULLOK UV *valuep
+Es     |void   |reginsert      |NN struct RExC_state_t *state|U8 op|NN regnode *opnd|U32 depth
+Es     |void   |regtail        |NN struct RExC_state_t *state|NN regnode *p|NN const regnode *val|U32 depth
+Es     |SV *   |reg_scan_name  |NN struct RExC_state_t *state|U32 flags
+Es     |U32    |join_exact     |NN struct RExC_state_t *state|NN regnode *scan|NN I32 *min|U32 flags|NULLOK regnode *val|U32 depth
+EsRn   |char * |regwhite       |NN struct RExC_state_t *state|NN char *p
+Es     |char * |nextchar       |NN struct RExC_state_t *state
+Es     |bool   |reg_skipcomment|NN struct RExC_state_t *state
+Es     |void   |scan_commit    |NN const struct RExC_state_t* state|NN struct scan_data_t *data|NN I32 *minlenp|int is_inf
 Esn    |void   |cl_anything    |NN const struct RExC_state_t* 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* state|NN struct regnode_charclass_class *cl
@@ -1309,31 +1355,63 @@ Esn     |void   |cl_and         |NN struct regnode_charclass_class *cl \
 Esn    |void   |cl_or          |NN const struct RExC_state_t* state|NN struct regnode_charclass_class *cl \
                                |NN const struct regnode_charclass_class *or_with
 Es     |I32    |study_chunk    |NN struct RExC_state_t* state|NN regnode **scanp \
-                               |NN I32 *deltap|NN regnode *last|NULLOK struct scan_data_t *data \
+                               |NN I32 *minlenp|NN I32 *deltap \
+                               |NN regnode *last|NULLOK struct scan_data_t *data \
+                               |I32 stopparen|NULLOK U8* recursed \
+                               |NULLOK struct regnode_charclass_class *and_withp \
                                |U32 flags|U32 depth
-EsRn   |I32    |add_data       |NN struct RExC_state_t* state|I32 n|NN const char *s
+EsRn   |U32    |add_data       |NN struct RExC_state_t* 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* state|I32 value
 Es     |void   |checkposixcc   |NN struct RExC_state_t* state
-
 Es     |I32    |make_trie      |NN struct RExC_state_t* state|NN regnode *startbranch \
                                |NN regnode *first|NN regnode *last|NN regnode *tail \
-                               |U32 flags
+                               |U32 word_count|U32 flags|U32 depth
+Es     |void   |make_trie_failtable    |NN struct RExC_state_t* state \
+                                |NN regnode *source|NN regnode *node|U32 depth
+#  ifdef DEBUGGING
+Es     |const regnode*|dumpuntil|NN const regexp *r|NN const regnode *start \
+                               |NN const regnode *node \
+                               |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     |void   |dump_trie      |NN const struct _reg_trie_data *trie\
+                               |NULLOK HV* widecharmap|NN AV *revcharmap\
+                               |U32 depth
+Es     |void   |dump_trie_interim_list|NN const struct _reg_trie_data *trie\
+                               |NULLOK HV* widecharmap|NN AV *revcharmap\
+                               |U32 next_alloc|U32 depth
+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 *state|NN regnode *p|NN const regnode *val|U32 depth
+#  endif
 #endif
 
 #if defined(PERL_IN_REGEXEC_C) || defined(PERL_DECL_PROT)
-ERs    |I32    |regmatch       |NN const regmatch_info *reginfo|NN regnode *prog
-ERs    |I32    |regrepeat      |NN const regexp *prog|NN const regnode *p|I32 max
-ERs    |I32    |regtry         |NN const regmatch_info *reginfo|NN char *startpos
+ERs    |I32    |regmatch       |NN regmatch_info *reginfo|NN regnode *prog
+ERs    |I32    |regrepeat      |NN const regexp *prog|NN const regnode *p|I32 max|int depth
+ERs    |I32    |regtry         |NN regmatch_info *reginfo|NN char **startpos
 ERs    |bool   |reginclass     |NULLOK const regexp *prog|NN const regnode *n|NN const U8 *p|NULLOK STRLEN *lenp\
                                |bool do_utf8sv_is_utf8
 Es     |CHECKPOINT|regcppush   |I32 parenfloor
 Es     |char*  |regcppop       |NN const regexp *rex
-ERsn   |U8*    |reghop3        |NN U8 *pos|I32 off|NN U8 *lim
-ERsn   |U8*    |reghopmaybe3   |NN U8 *pos|I32 off|NN U8 *lim
-ERs    |char*  |find_byclass   |NN regexp * prog|NN const regnode *c|NN char *s|NN const char *strend|NULLOK const regmatch_info *reginfo
+ERsn   |U8*    |reghop3        |NN U8 *pos|I32 off|NN const U8 *lim
+#ifdef XXX_dmq
+ERsn   |U8*    |reghop4        |NN U8 *pos|I32 off|NN const U8 *llim|NN const U8 *rlim
+#endif
+ERsn   |U8*    |reghopmaybe3   |NN U8 *pos|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
+Es     |void   |swap_match_buff|NN regexp * prog
 Es     |void   |to_utf8_substr |NN regexp * prog
 Es     |void   |to_byte_substr |NN regexp * prog
+ERs    |I32    |reg_check_named_buff_matched   |NN const regexp *rex|NN const regnode *prog
+#  ifdef DEBUGGING
+Es     |void   |dump_exec_pos  |NN const char *locinput|NN const regnode *scan|NN const char *loc_regeol\
+                               |NN const char *loc_bostr|NN const char *loc_reg_starttry|const bool do_utf8
+Es     |void   |debug_start_match|NN const regexp *prog|const bool do_utf8|NN const char *start|NN const char *end|NN const char *blurb
+#  endif
 #endif
 
 #if defined(PERL_IN_DUMP_C) || defined(PERL_DECL_PROT)
@@ -1382,25 +1460,18 @@ s       |STRLEN |sv_pos_u2b_cached|NN SV *sv|NN MAGIC **mgp \
                |STRLEN uoffset|STRLEN uoffset0|STRLEN boffset0
 s      |void   |utf8_mg_pos_cache_update|NN SV *sv|NN MAGIC **mgp \
                |STRLEN byte|STRLEN utf8|STRLEN blen
-s      |STRLEN |sv_pos_b2u_forwards|NN const U8 *s|NN const U8 *const target
 s      |STRLEN |sv_pos_b2u_midway|NN const U8 *s|NN const U8 *const target \
                |NN const U8 *end|STRLEN endu
-s      |char * |stringify_regexp|NN SV *sv|NN MAGIC *mg|NULLOK STRLEN *lp
 sn     |char * |F0convert      |NV nv|NN char *endbuf|NN STRLEN *len
 #  if defined(PERL_OLD_COPY_ON_WRITE)
-sM     |void   |sv_release_COW |NN SV *sv|NN const char *pvx|STRLEN len|NN SV *after
+sM     |void   |sv_release_COW |NN SV *sv|NN const char *pvx|NN SV *after
 #  endif
 s      |SV *   |more_sv
 s      |void * |more_bodies    |svtype sv_type
 s      |bool   |sv_2iuv_common |NN SV *sv
 s      |void   |glob_assign_glob|NN SV *dstr|NN SV *sstr|const int dtype
 s      |void   |glob_assign_ref|NN SV *dstr|NN SV *sstr
-#  if defined(USE_ITHREADS)
 sRn    |PTR_TBL_ENT_t *|ptr_table_find|NN PTR_TBL_t *tbl|NN const void *sv
-#  endif
-s      |SV *   |find_hash_subscript|NULLOK HV *hv|NN SV *val
-s      |I32    |find_array_subscript|NULLOK AV *av|NN SV *val
-s      |SV *   |find_uninit_var|NULLOK OP *obase|NULLOK SV *uninit_sv|bool match
 #endif
 
 #if defined(PERL_IN_TOKE_C) || defined(PERL_DECL_PROT)
@@ -1410,7 +1481,7 @@ s |char*  |force_version  |NN char *start|int guessing
 s      |char*  |force_word     |NN char *start|int token|int check_keyword \
                                |int allow_pack|int allow_tick
 s      |SV*    |tokeq          |NN SV *sv
-s      |int    |pending_ident
+s      |void   |readpipe_override|
 sR     |char*  |scan_const     |NN char *start
 sR     |char*  |scan_formline  |NN char *s
 sR     |char*  |scan_heredoc   |NN char *s
@@ -1423,13 +1494,15 @@ 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 *buf|STRLEN len
 sR     |char*  |skipspace      |NN char *s
 sR     |char*  |swallow_bom    |NN U8 *s
 s      |void   |checkcomma     |NN const char *s|NN const char *name \
                                |NN const char *what
 s      |bool   |feature_is_enabled|NN const char* name|STRLEN namelen
 s      |void   |force_ident    |NN const char *s|int kind
-s      |void   |incline        |NN char *s
+s      |void   |incline        |NN const char *s
 s      |int    |intuit_method  |NN char *s|NULLOK GV *gv|NULLOK CV *cv
 s      |int    |intuit_more    |NN char *s
 s      |I32    |lop            |I32 f|int x|NN char *s
@@ -1457,7 +1530,7 @@ s |void   |printbuf       |NN const char* fmt|NN const char* s
 #endif
 
 #if defined(PERL_IN_UNIVERSAL_C) || defined(PERL_DECL_PROT)
-s      |bool|isa_lookup        |NULLOK HV *stash|NN const char *name|NULLOK HV *name_stash|int len|int level
+s      |bool|isa_lookup        |NULLOK HV *stash|NN const char *name|NULLOK const HV * const name_stash|int len|int level
 #endif
 
 #if defined(PERL_IN_LOCALE_C) || defined(PERL_DECL_PROT)
@@ -1500,6 +1573,8 @@ Apn       |int    |my_socketpair  |int family|int type|int protocol|int fd[2]
 pMXE   |SV*    |sv_setsv_cow   |NN SV* dsv|NN SV* ssv
 #endif
 
+Aop    |const char *|PerlIO_context_layers|NULLOK const char *mode
+
 #if defined(USE_PERLIO) && !defined(USE_SFIO)
 Ap     |int    |PerlIO_close           |NULLOK PerlIO *f
 Ap     |int    |PerlIO_fill            |NULLOK PerlIO *f
@@ -1582,7 +1657,10 @@ ApoR     |I32    |hv_placeholders_get    |NN HV* hv
 Apo    |void   |hv_placeholders_set    |NN HV* hv|I32 ph
 
 p      |SV*    |magic_scalarpack|NN HV* hv|NN MAGIC* mg
-#ifdef PERL_IN_SV_C
+
+#if defined(PERL_IN_SV_C) || defined(PERL_DECL_PROT)
+s      |SV *   |find_hash_subscript|NULLOK HV *hv|NN SV *val
+s      |I32    |find_array_subscript|NULLOK AV *av|NN SV *val
 sMd    |SV*    |find_uninit_var|NULLOK OP* obase|NULLOK SV* uninit_sv|bool top
 #endif
 
@@ -1686,11 +1764,27 @@ p       |void   |offer_nice_chunk       |NN void *chunk|U32 chunk_size
 Apnod  |int    |my_sprintf     |NN char *buffer|NN const char *pat|...
 #endif
 
+Apnodf |int    |my_snprintf    |NN char *buffer|const Size_t len|NN const char *format|...
+Apnod  |int    |my_vsnprintf   |NN char *buffer|const Size_t len|NN const char *format|va_list ap
+
 px     |void   |my_clearenv
 
 #ifdef PERL_IMPLICIT_CONTEXT
+#ifdef PERL_GLOBAL_STRUCT_PRIVATE
+Apo    |void*  |my_cxt_init    |NN const char *my_cxt_key|size_t size
+Apo    |int    |my_cxt_index   |NN const char *my_cxt_key
+#else
 Apo    |void*  |my_cxt_init    |NN int *index|size_t size
 #endif
+#endif
+
+#ifndef HAS_STRLCAT
+Apno   |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
+#endif
 
 #ifdef PERL_MAD
 Mnp    |void   |pad_peg        |NN const char* s
@@ -1740,6 +1834,12 @@ s        |void   |curmad         |char slot|NULLOK SV *sv
 Mp     |int    |madlex
 Mp     |int    |madparse
 #endif
+#if !defined(HAS_SIGNBIT)
+AMdnoP |int    |Perl_signbit   |NV f
+#endif
+
+XEMop  |void   |emulate_cop_io |NN const COP *const c|NN SV *const sv
+XEMop  |regexp *|get_re_arg|NULLOK SV *sv|U32 flags|NULLOK MAGIC **mgp
 
 END_EXTERN_C
 /*