This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Avoid pointer churn in study_chunk recursion bitmap allocation
[perl5.git] / embed.fnc
index c328e3a..3d90eeb 100644 (file)
--- a/embed.fnc
+++ b/embed.fnc
@@ -300,7 +300,7 @@ p   |SV *   |core_prototype |NULLOK SV *sv|NN const char *name \
 p      |OP *   |coresub_op     |NN SV *const coreargssv|const int code \
                                |const int opnum
 : Used in sv.c
-p      |void   |cv_ckproto_len_flags   |NN const CV* cv|NULLOK const GV* gv\
+EMXp   |void   |cv_ckproto_len_flags   |NN const CV* cv|NULLOK const GV* gv\
                                |NULLOK const char* p|const STRLEN len \
                                 |const U32 flags
 : Used in pp.c and pp_sys.c
@@ -514,6 +514,8 @@ Ap  |void   |gv_init_pv     |NN GV* gv|NULLOK HV* stash|NN const char* name \
 Ap     |void   |gv_init_pvn    |NN GV* gv|NULLOK HV* stash|NN const char* name \
                                 |STRLEN len|U32 flags
 Ap     |void   |gv_name_set    |NN GV* gv|NN const char *name|U32 len|U32 flags
+px     |GV *   |gv_override    |NN const char * const name \
+                               |const STRLEN len
 XMpd   |void   |gv_try_downgrade|NN GV* gv
 Apd    |HV*    |gv_stashpv     |NN const char* name|I32 flags
 Apd    |HV*    |gv_stashpvn    |NN const char* name|U32 namelen|I32 flags
@@ -862,6 +864,7 @@ poX |OP*    |op_lvalue_flags|NULLOK OP* o|I32 type|U32 flags
 p      |void   |finalize_optree                |NN OP* o
 #if defined(PERL_IN_OP_C)
 s      |void   |finalize_op    |NN OP* o
+s      |void   |move_proto_attr|NN OP **proto|NN OP **attrs|NN const GV *name
 #endif
 : Used in op.c and pp_sys.c
 p      |int    |mode_from_discipline|NULLOK const char* s|STRLEN len
@@ -1260,6 +1263,8 @@ Apd       |NV     |scan_oct       |NN const char* start|STRLEN len|NN STRLEN* retlen
 AMpd   |OP*    |op_scope       |NULLOK OP* o
 Ap     |char*  |screaminstr    |NN SV *bigstr|NN SV *littlestr|I32 start_shift \
                                |I32 end_shift|NN I32 *old_posp|I32 last
+: Only used by perl.c/miniperl.c, but defined in caretx.c
+px     |void   |set_caret_X
 Apd    |void   |setdefout      |NN GV* gv
 Ap     |HEK*   |share_hek      |NN const char* str|I32 len|U32 hash
 #if defined(HAS_SIGACTION) && defined(SA_SIGINFO)
@@ -1275,7 +1280,7 @@ Ap        |I32    |start_subparse |I32 is_format|U32 flags
 : Used in pp_ctl.c
 p      |void   |sub_crush_depth|NN CV* cv
 Amd    |bool   |sv_2bool       |NN SV *const sv
-Apd    |bool   |sv_2bool_flags |NN SV *const sv|const I32 flags
+Apd    |bool   |sv_2bool_flags |NN SV *sv|I32 flags
 Apd    |CV*    |sv_2cv         |NULLOK SV* sv|NN HV **const st|NN GV **const gvp \
                                |const I32 lref
 Apd    |IO*    |sv_2io         |NN SV *const sv
@@ -1747,9 +1752,10 @@ Ap       |void   |sys_intern_dup |NN struct interp_intern* src|NN struct interp_intern*
 #  endif
 #endif
 
-AopP   |const XOP *    |custom_op_xop  |NN const OP *o
+AmopP  |const XOP *    |custom_op_xop  |NN const OP *o
 ApR    |const char *   |custom_op_name |NN const OP *o
 ApR    |const char *   |custom_op_desc |NN const OP *o
+pRX    |XOPRETANY      |custom_op_get_field    |NN const OP *o|const xop_flags_enum field
 Aop    |void   |custom_op_register     |NN Perl_ppaddr_t ppaddr \
                        |NN const XOP *xop
 
@@ -1954,7 +1960,8 @@ sR        |PerlIO *|check_type_and_open|NN SV *name
 #ifndef PERL_DISABLE_PMC
 sR     |PerlIO *|doopen_pm     |NN SV *name
 #endif
-s      |SV **  |adjust_stack_on_leave|NN SV **newsp|NN SV **sp|NN SV **mark|I32 gimme|U32 flags
+s      |SV **  |adjust_stack_on_leave|NN SV **newsp|NN SV **sp|NN SV **mark|I32 gimme \
+                                     |U32 flags|bool lvalue
 iRn    |bool   |path_is_searchable|NN const char *name
 sR     |I32    |run_user_filter|int idx|NN SV *buf_sv|int maxlen
 sR     |PMOP*  |make_matcher   |NN REGEXP* re
@@ -1994,92 +2001,110 @@ p      |OP *   |tied_method|NN SV *methname|NN SV **sp \
                                |const U32 flags|U32 argc|...
 
 #if defined(PERL_IN_REGCOMP_C)
-Es     |regnode*|reg           |NN struct RExC_state_t *pRExC_state \
+Es     |regnode*|reg           |NN RExC_state_t *pRExC_state \
                                |I32 paren|NN I32 *flagp|U32 depth
-Es     |regnode*|reganode      |NN struct RExC_state_t *pRExC_state|U8 op \
+Es     |regnode*|reganode      |NN RExC_state_t *pRExC_state|U8 op \
                                |U32 arg
-Es     |regnode*|regatom       |NN struct RExC_state_t *pRExC_state \
+Es     |regnode*|regatom       |NN RExC_state_t *pRExC_state \
                                |NN I32 *flagp|U32 depth
-Es     |regnode*|regbranch     |NN struct RExC_state_t *pRExC_state \
+Es     |regnode*|regbranch     |NN RExC_state_t *pRExC_state \
                                |NN I32 *flagp|I32 first|U32 depth
-Es     |STRLEN |reguni         |NN const struct RExC_state_t *pRExC_state \
+Es     |STRLEN |reguni         |NN const RExC_state_t *pRExC_state \
                                |UV uv|NN char *s
-Es     |void    |set_ANYOF_arg |NN struct RExC_state_t* const pRExC_state \
+Es     |void    |set_ANYOF_arg |NN RExC_state_t* const pRExC_state \
                                |NN regnode* const node                    \
                                |NULLOK SV* const cp_list                  \
                                |NULLOK SV* const runtime_defns            \
                                |NULLOK SV* const swash                    \
                                |const bool has_user_defined_property
-Es     |regnode*|regclass      |NN struct RExC_state_t *pRExC_state \
+Es     |regnode*|regclass      |NN RExC_state_t *pRExC_state \
                                |NN I32 *flagp|U32 depth|const bool stop_at_1 \
                                |bool allow_multi_fold                        \
                                |const bool silence_non_portable              \
                                |NULLOK SV** ret_invlist
-Es     |bool|could_it_be_a_POSIX_class|NN struct RExC_state_t *pRExC_state
-Es     |regnode*|handle_regex_sets|NN struct RExC_state_t *pRExC_state \
+Es     |bool|could_it_be_a_POSIX_class|NN RExC_state_t *pRExC_state
+Es     |regnode*|handle_regex_sets|NN RExC_state_t *pRExC_state \
                                |NULLOK SV ** return_invlist            \
                                |NN I32 *flagp|U32 depth                \
                                |NN char * const oregcomp_parse
-Es     |void|parse_lparen_question_flags|NN struct RExC_state_t *pRExC_state
-Es     |regnode*|reg_node      |NN struct RExC_state_t *pRExC_state|U8 op
+Es     |void|parse_lparen_question_flags|NN RExC_state_t *pRExC_state
+Es     |regnode*|reg_node      |NN RExC_state_t *pRExC_state|U8 op
 Es     |UV     |reg_recode     |const char value|NN SV **encp
-Es     |regnode*|regpiece      |NN struct RExC_state_t *pRExC_state \
+Es     |regnode*|regpiece      |NN RExC_state_t *pRExC_state \
                                |NN I32 *flagp|U32 depth
-Es     |bool   |grok_bslash_N  |NN struct RExC_state_t *pRExC_state        \
+Es     |bool   |grok_bslash_N  |NN RExC_state_t *pRExC_state        \
                                |NULLOK regnode** nodep|NULLOK UV *valuep   \
                                |NN I32 *flagp|U32 depth|bool in_char_class \
                                |const bool strict
-Es     |void   |reginsert      |NN struct RExC_state_t *pRExC_state \
+Es     |void   |reginsert      |NN RExC_state_t *pRExC_state \
                                |U8 op|NN regnode *opnd|U32 depth
-Es     |void   |regtail        |NN struct RExC_state_t *pRExC_state \
+Es     |void   |regtail        |NN RExC_state_t *pRExC_state \
                                |NN regnode *p|NN const regnode *val|U32 depth
-Es     |SV *   |reg_scan_name  |NN struct RExC_state_t *pRExC_state \
+Es     |SV *   |reg_scan_name  |NN RExC_state_t *pRExC_state \
                                |U32 flags
-Es     |U32    |join_exact     |NN struct RExC_state_t *pRExC_state \
+Es     |U32    |join_exact     |NN RExC_state_t *pRExC_state \
                                |NN regnode *scan|NN UV *min_subtract  \
                                |NN bool *has_exactf_sharp_s  \
                                |U32 flags|NULLOK regnode *val|U32 depth
-EsRn   |char * |regwhite       |NN struct RExC_state_t *pRExC_state \
+EsRn   |char * |regwhite       |NN RExC_state_t *pRExC_state \
                                |NN char *p
-EsRn   |char * |regpatws       |NN struct RExC_state_t *pRExC_state \
+EsRn   |char * |regpatws       |NN RExC_state_t *pRExC_state \
                                |NN char *p|const bool recognize_comment
-Ei     |void   |alloc_maybe_populate_EXACT|NN struct RExC_state_t *pRExC_state \
+Ei     |void   |alloc_maybe_populate_EXACT|NN RExC_state_t *pRExC_state \
                                |NN regnode *node|NN I32 *flagp|STRLEN len \
                                |UV code_point
-Ei     |U8   |compute_EXACTish|NN struct RExC_state_t *pRExC_state
-Es     |char * |nextchar       |NN struct RExC_state_t *pRExC_state
-Es     |bool   |reg_skipcomment|NN struct RExC_state_t *pRExC_state
-Es     |void   |scan_commit    |NN const struct RExC_state_t *pRExC_state \
-                               |NN struct scan_data_t *data \
-                               |NN SSize_t *minlenp|int is_inf
+Ei     |U8   |compute_EXACTish|NN RExC_state_t *pRExC_state
+Es     |char * |nextchar       |NN RExC_state_t *pRExC_state
+Es     |bool   |reg_skipcomment|NN RExC_state_t *pRExC_state
+Es     |void   |scan_commit    |NN const RExC_state_t *pRExC_state \
+                               |NN struct scan_data_t *data        \
+                               |NN SSize_t *minlenp                \
+                               |int is_inf
 Es     |void   |populate_ANYOF_from_invlist|NN regnode *node|NN SV** invlist_ptr
-Esn    |void   |cl_anything    |NN const struct RExC_state_t *pRExC_state \
-                               |NN regnode_ssc *cl
-EsRn   |int    |cl_is_anything |NN const regnode_ssc *cl
-Esn    |void   |cl_init        |NN const struct RExC_state_t *pRExC_state \
-                               |NN regnode_ssc *cl
-Esn    |void   |cl_and         |NN regnode_ssc *cl \
+Es     |void   |ssc_anything   |NN regnode_ssc *ssc
+EsR    |int    |ssc_is_anything|NN const regnode_ssc *ssc
+Es     |void   |ssc_init       |NN const RExC_state_t *pRExC_state \
+                               |NN regnode_ssc *ssc
+EsR    |int    |ssc_is_cp_posixl_init|NN const RExC_state_t *pRExC_state \
+                               |NN const regnode_ssc *ssc
+Es     |void   |ssc_and        |NN const RExC_state_t *pRExC_state \
+                               |NN regnode_ssc *ssc                \
                                |NN const regnode_ssc *and_with
-Esn    |void   |cl_or          |NN const struct RExC_state_t *pRExC_state \
-                               |NN regnode_ssc *cl \
+Esn    |void   |ssc_flags_and  |NN regnode_ssc *ssc|const U8 and_with
+Es     |void   |ssc_or         |NN const RExC_state_t *pRExC_state \
+                               |NN regnode_ssc *ssc \
                                |NN const regnode_ssc *or_with
-Es     |SSize_t|study_chunk    |NN struct RExC_state_t *pRExC_state \
+Es     |SV*    |get_ANYOF_cp_list_for_ssc                                 \
+                               |NN const RExC_state_t *pRExC_state \
+                               |NN const regnode_charclass_posixl* const node
+Ei     |void   |ssc_intersection|NN regnode_ssc *ssc \
+                               |NN SV* const invlist|const bool invert_2nd
+Ei     |void   |ssc_union      |NN regnode_ssc *ssc \
+                               |NN SV* const invlist|const bool invert_2nd
+Ei     |void   |ssc_add_range  |NN regnode_ssc *ssc \
+                               |UV const start|UV const end
+Ei     |void   |ssc_cp_and     |NN regnode_ssc *ssc \
+                               |UV const cp
+Ei     |void   |ssc_clear_locale|NN regnode_ssc *ssc
+Es     |void   |ssc_finalize   |NN RExC_state_t *pRExC_state \
+                               |NN regnode_ssc *ssc
+Es     |SSize_t|study_chunk    |NN RExC_state_t *pRExC_state \
                                |NN regnode **scanp|NN SSize_t *minlenp \
                                |NN SSize_t *deltap|NN regnode *last \
                                |NULLOK struct scan_data_t *data \
-                               |I32 stopparen|NULLOK U8* recursed \
+                                |I32 stopparen|U32 recursed_depth \
                                |NULLOK regnode_ssc *and_withp \
                                |U32 flags|U32 depth
-EsRn   |U32    |add_data       |NN struct RExC_state_t *pRExC_state|U32 n \
-                               |NN const char *s
+EsRn   |U32    |add_data       |NN RExC_state_t* const pRExC_state \
+                               |NN const char* const s|const U32 n
 rs     |void   |re_croak2      |bool utf8|NN const char* pat1|NN const char* pat2|...
-Ei     |I32    |regpposixcc    |NN struct RExC_state_t *pRExC_state \
+Ei     |I32    |regpposixcc    |NN RExC_state_t *pRExC_state \
                                |I32 value|const bool strict
-Es     |I32    |make_trie      |NN struct RExC_state_t *pRExC_state \
+Es     |I32    |make_trie      |NN RExC_state_t *pRExC_state \
                                |NN regnode *startbranch|NN regnode *first \
                                |NN regnode *last|NN regnode *tail \
                                |U32 word_count|U32 flags|U32 depth
-Es     |void   |make_trie_failtable    |NN struct RExC_state_t *pRExC_state \
+Es     |void   |make_trie_failtable    |NN RExC_state_t *pRExC_state \
                                 |NN regnode *source|NN regnode *stclass \
                                |U32 depth
 #  ifdef DEBUGGING
@@ -2101,7 +2126,7 @@ Es        |void   |dump_trie_interim_list|NN const struct _reg_trie_data *trie\
 Es     |void   |dump_trie_interim_table|NN const struct _reg_trie_data *trie\
                                |NULLOK HV* widecharmap|NN AV *revcharmap\
                                |U32 next_alloc|U32 depth
-Es     |U8     |regtail_study  |NN struct RExC_state_t *pRExC_state \
+Es     |U8     |regtail_study  |NN RExC_state_t *pRExC_state \
                                |NN regnode *p|NN const regnode *val|U32 depth
 #  endif
 #endif
@@ -2234,7 +2259,6 @@ s |char*  |force_strict_version   |NN char *s
 s      |char*  |force_word     |NN char *start|int token|int check_keyword \
                                |int allow_pack
 s      |SV*    |tokeq          |NN SV *sv
-s      |void   |readpipe_override|
 sR     |char*  |scan_const     |NN char *start
 iR     |SV*    |get_and_check_backslash_N_name|NN const char* s \
                                |NN const char* const e
@@ -2246,7 +2270,8 @@ sR        |char*  |scan_inputsymbol|NN char *start
 sR     |char*  |scan_pat       |NN char *start|I32 type
 sR     |char*  |scan_str       |NN char *start|int keep_quoted \
                                |int keep_delims|int re_reparse \
-                               |bool deprecate_escaped_matching
+                               |bool deprecate_escaped_matching \
+                               |NULLOK char **delimp
 sR     |char*  |scan_subst     |NN char *start
 sR     |char*  |scan_trans     |NN char *start
 s      |char*  |scan_word      |NN char *s|NN char *dest|STRLEN destlen \
@@ -2644,7 +2669,8 @@ sd        |AV*    |mro_get_linear_isa_dfs|NN HV* stash|U32 level
 s      |void   |mro_clean_isarev|NN HV * const isa   \
                                 |NN const char * const name \
                                 |const STRLEN len \
-                                |NULLOK HV * const exceptions|U32 flags
+                                |NULLOK HV * const exceptions \
+                                |U32 hash|U32 flags
 s      |void   |mro_gather_and_rename|NN HV * const stashes \
                                      |NN HV * const seen_stashes \
                                      |NULLOK HV *stash \