X-Git-Url: https://perl5.git.perl.org/perl5.git/blobdiff_plain/786e8c118e1218e4c348fecf469934e080881633..687d3573c7533b89705e64f529b53c631cb9dec0:/proto.h diff --git a/proto.h b/proto.h index ae714fb..a0d3b95 100644 --- a/proto.h +++ b/proto.h @@ -227,7 +227,7 @@ PERL_CALLCONV OP* Perl_convert(pTHX_ I32 optype, I32 flags, OP* o) PERL_CALLCONV PERL_CONTEXT* Perl_create_eval_scope(pTHX_ U32 flags); PERL_CALLCONV void Perl_croak(pTHX_ const char* pat, ...) __attribute__noreturn__ - __attribute__format__(__printf__,pTHX_1,pTHX_2); + __attribute__format__null_ok__(__printf__,pTHX_1,pTHX_2); PERL_CALLCONV void Perl_vcroak(pTHX_ const char* pat, va_list* args) __attribute__noreturn__ @@ -385,7 +385,7 @@ PERL_CALLCONV void Perl_deprecate_old(pTHX_ const char* s) __attribute__nonnull__(pTHX_1); PERL_CALLCONV OP* Perl_die(pTHX_ const char* pat, ...) - __attribute__format__(__printf__,pTHX_1,pTHX_2); + __attribute__format__null_ok__(__printf__,pTHX_1,pTHX_2); PERL_CALLCONV OP* Perl_vdie(pTHX_ const char* pat, va_list* args); PERL_CALLCONV OP* Perl_die_where(pTHX_ const char* message, STRLEN msglen); @@ -588,6 +588,9 @@ PERL_CALLCONV char* Perl_getenv_len(pTHX_ const char* key, unsigned long *len) __attribute__nonnull__(pTHX_2); #endif +PERL_CALLCONV void Perl_get_db_sub(pTHX_ SV **svp, CV *cv) + __attribute__nonnull__(pTHX_2); + PERL_CALLCONV void Perl_gp_free(pTHX_ GV* gv); PERL_CALLCONV GP* Perl_gp_ref(pTHX_ GP* gp); PERL_CALLCONV GV* Perl_gv_AVadd(pTHX_ GV* gv) @@ -1007,7 +1010,7 @@ PERL_CALLCONV bool Perl_is_utf8_mark(pTHX_ const U8 *p) PERL_CALLCONV OP* Perl_jmaybe(pTHX_ OP* arg) __attribute__nonnull__(pTHX_1); -PERL_CALLCONV I32 Perl_keyword(pTHX_ const char* d, I32 len) +PERL_CALLCONV I32 Perl_keyword(pTHX_ const char* d, I32 len, bool all_keywords) __attribute__pure__ __attribute__nonnull__(pTHX_1); @@ -1833,11 +1836,26 @@ PERL_CALLCONV I32 Perl_pregexec(pTHX_ regexp* prog, char* stringarg, char* stren __attribute__nonnull__(pTHX_6); PERL_CALLCONV void Perl_pregfree(pTHX_ struct regexp* r); +PERL_CALLCONV void Perl_regfree_internal(pTHX_ struct regexp* r); +PERL_CALLCONV char * Perl_reg_stringify(pTHX_ MAGIC *mg, STRLEN *lp, U32 *flags, I32 *haseval) + __attribute__nonnull__(pTHX_1); + +#if defined(USE_ITHREADS) +PERL_CALLCONV void* Perl_regdupe_internal(pTHX_ const regexp* r, CLONE_PARAMS* param) + __attribute__nonnull__(pTHX_1) + __attribute__nonnull__(pTHX_2); + +#endif PERL_CALLCONV regexp* Perl_pregcomp(pTHX_ char* exp, char* xend, PMOP* pm) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2) __attribute__nonnull__(pTHX_3); +PERL_CALLCONV regexp* Perl_re_compile(pTHX_ char* exp, char* xend, PMOP* pm) + __attribute__nonnull__(pTHX_1) + __attribute__nonnull__(pTHX_2) + __attribute__nonnull__(pTHX_3); + PERL_CALLCONV char* Perl_re_intuit_start(pTHX_ regexp* prog, SV* sv, char* strpos, char* strend, U32 flags, struct re_scream_pos_data_s *data) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_3) @@ -1857,6 +1875,9 @@ PERL_CALLCONV regnode* Perl_regnext(pTHX_ regnode* p) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); +PERL_CALLCONV SV* Perl_reg_named_buff_sv(pTHX_ SV* namesv) + __attribute__nonnull__(pTHX_1); + PERL_CALLCONV void Perl_regprop(pTHX_ const regexp *prog, SV* sv, const regnode* o) __attribute__nonnull__(pTHX_2) __attribute__nonnull__(pTHX_3); @@ -2282,7 +2303,7 @@ PERL_CALLCONV bool Perl_sv_cat_decode(pTHX_ SV* dsv, SV *encoding, SV *ssv, int __attribute__nonnull__(pTHX_4) __attribute__nonnull__(pTHX_5); -PERL_CALLCONV char* Perl_sv_reftype(pTHX_ const SV* sv, int ob) +PERL_CALLCONV const char* Perl_sv_reftype(pTHX_ const SV* sv, int ob) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); @@ -3132,10 +3153,6 @@ PERL_CALLCONV OP* Perl_ck_sassign(pTHX_ OP *o) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); -PERL_CALLCONV OP* Perl_ck_say(pTHX_ OP *o) - __attribute__warn_unused_result__ - __attribute__nonnull__(pTHX_1); - PERL_CALLCONV OP* Perl_ck_select(pTHX_ OP *o) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); @@ -3456,11 +3473,6 @@ STATIC void S_do_oddball(pTHX_ HV *hash, SV **relem, SV **firstrelem) __attribute__nonnull__(pTHX_2) __attribute__nonnull__(pTHX_3); -STATIC CV* S_get_db_sub(pTHX_ SV **svp, CV *cv) - __attribute__warn_unused_result__ - __attribute__nonnull__(pTHX_1) - __attribute__nonnull__(pTHX_2); - STATIC SV* S_method_common(pTHX_ SV* meth, U32* hashp) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); @@ -3561,11 +3573,15 @@ STATIC I32 S_regcurly(const char *) STATIC regnode* S_reg_node(pTHX_ struct RExC_state_t *state, U8 op) __attribute__nonnull__(pTHX_1); +STATIC UV S_reg_recode(pTHX_ const char value, SV **encp); STATIC regnode* S_regpiece(pTHX_ struct RExC_state_t *state, I32 *flagp, U32 depth) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); -STATIC void S_reginsert(pTHX_ struct RExC_state_t *state, U8 op, regnode *opnd) +STATIC regnode* S_reg_namedseq(pTHX_ struct RExC_state_t *state, UV *valuep) + __attribute__nonnull__(pTHX_1); + +STATIC void S_reginsert(pTHX_ struct RExC_state_t *state, U8 op, regnode *opnd, U32 depth) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_3); @@ -3574,6 +3590,9 @@ STATIC void S_regtail(pTHX_ struct RExC_state_t *state, regnode *p, const regnod __attribute__nonnull__(pTHX_2) __attribute__nonnull__(pTHX_3); +STATIC SV * S_reg_scan_name(pTHX_ struct RExC_state_t *state, U32 flags) + __attribute__nonnull__(pTHX_1); + STATIC U32 S_join_exact(pTHX_ struct RExC_state_t *state, regnode *scan, I32 *min, U32 flags, regnode *val, U32 depth) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2) @@ -3587,9 +3606,10 @@ STATIC char* S_regwhite(char *p, const char *e) STATIC char* S_nextchar(pTHX_ struct RExC_state_t *state) __attribute__nonnull__(pTHX_1); -STATIC void S_scan_commit(pTHX_ const struct RExC_state_t* state, struct scan_data_t *data) +STATIC void S_scan_commit(pTHX_ const struct RExC_state_t* state, struct scan_data_t *data, I32 *minlenp, int is_inf) __attribute__nonnull__(pTHX_1) - __attribute__nonnull__(pTHX_2); + __attribute__nonnull__(pTHX_2) + __attribute__nonnull__(pTHX_3); STATIC void S_cl_anything(const struct RExC_state_t* state, struct regnode_charclass_class *cl) __attribute__nonnull__(1) @@ -3616,13 +3636,14 @@ STATIC void S_cl_or(const struct RExC_state_t* state, struct regnode_charclass_c __attribute__nonnull__(2) __attribute__nonnull__(3); -STATIC I32 S_study_chunk(pTHX_ struct RExC_state_t* state, regnode **scanp, I32 *deltap, regnode *last, struct scan_data_t *data, U32 flags, U32 depth) +STATIC I32 S_study_chunk(pTHX_ struct RExC_state_t* state, regnode **scanp, I32 *minlenp, I32 *deltap, regnode *last, struct scan_data_t *data, I32 stopparen, U8* recursed, struct regnode_charclass_class *and_withp, U32 flags, U32 depth) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2) __attribute__nonnull__(pTHX_3) - __attribute__nonnull__(pTHX_4); + __attribute__nonnull__(pTHX_4) + __attribute__nonnull__(pTHX_5); -STATIC I32 S_add_data(struct RExC_state_t* state, I32 n, const char *s) +STATIC U32 S_add_data(struct RExC_state_t* state, U32 n, const char *s) __attribute__warn_unused_result__ __attribute__nonnull__(1) __attribute__nonnull__(3); @@ -3660,14 +3681,17 @@ STATIC const regnode* S_dumpuntil(pTHX_ const regexp *r, const regnode *start, c STATIC void S_put_byte(pTHX_ SV* sv, int c) __attribute__nonnull__(pTHX_1); -STATIC void S_dump_trie(pTHX_ const struct _reg_trie_data *trie, U32 depth) - __attribute__nonnull__(pTHX_1); +STATIC void S_dump_trie(pTHX_ const struct _reg_trie_data *trie, HV* widecharmap, AV *revcharmap, U32 depth) + __attribute__nonnull__(pTHX_1) + __attribute__nonnull__(pTHX_3); -STATIC void S_dump_trie_interim_list(pTHX_ const struct _reg_trie_data *trie, U32 next_alloc, U32 depth) - __attribute__nonnull__(pTHX_1); +STATIC void S_dump_trie_interim_list(pTHX_ const struct _reg_trie_data *trie, HV* widecharmap, AV *revcharmap, U32 next_alloc, U32 depth) + __attribute__nonnull__(pTHX_1) + __attribute__nonnull__(pTHX_3); -STATIC void S_dump_trie_interim_table(pTHX_ const struct _reg_trie_data *trie, U32 next_alloc, U32 depth) - __attribute__nonnull__(pTHX_1); +STATIC void S_dump_trie_interim_table(pTHX_ const struct _reg_trie_data *trie, HV* widecharmap, AV *revcharmap, U32 next_alloc, U32 depth) + __attribute__nonnull__(pTHX_1) + __attribute__nonnull__(pTHX_3); STATIC U8 S_regtail_study(pTHX_ struct RExC_state_t *state, regnode *p, const regnode *val, U32 depth) __attribute__nonnull__(pTHX_1) @@ -3678,17 +3702,17 @@ STATIC U8 S_regtail_study(pTHX_ struct RExC_state_t *state, regnode *p, const re #endif #if defined(PERL_IN_REGEXEC_C) || defined(PERL_DECL_PROT) -STATIC I32 S_regmatch(pTHX_ const regmatch_info *reginfo, regnode *prog) +STATIC I32 S_regmatch(pTHX_ regmatch_info *reginfo, regnode *prog) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); -STATIC I32 S_regrepeat(pTHX_ const regexp *prog, const regnode *p, I32 max) +STATIC I32 S_regrepeat(pTHX_ const regexp *prog, const regnode *p, I32 max, int depth) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); -STATIC I32 S_regtry(pTHX_ const regmatch_info *reginfo, char *startpos) +STATIC I32 S_regtry(pTHX_ regmatch_info *reginfo, char **startpos) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); @@ -3707,12 +3731,20 @@ STATIC U8* S_reghop3(U8 *pos, I32 off, const U8 *lim) __attribute__nonnull__(1) __attribute__nonnull__(3); +#ifdef XXX_dmq +STATIC U8* S_reghop4(U8 *pos, I32 off, const U8 *llim, const U8 *rlim) + __attribute__warn_unused_result__ + __attribute__nonnull__(1) + __attribute__nonnull__(3) + __attribute__nonnull__(4); + +#endif STATIC U8* S_reghopmaybe3(U8 *pos, I32 off, const U8 *lim) __attribute__warn_unused_result__ __attribute__nonnull__(1) __attribute__nonnull__(3); -STATIC char* S_find_byclass(pTHX_ regexp * prog, const regnode *c, char *s, const char *strend, const regmatch_info *reginfo) +STATIC char* S_find_byclass(pTHX_ regexp * prog, const regnode *c, char *s, const char *strend, regmatch_info *reginfo) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2) @@ -3725,6 +3757,11 @@ STATIC void S_to_utf8_substr(pTHX_ regexp * prog) STATIC void S_to_byte_substr(pTHX_ regexp * prog) __attribute__nonnull__(pTHX_1); +STATIC I32 S_reg_check_named_buff_matched(pTHX_ const regexp *rex, const regnode *prog) + __attribute__warn_unused_result__ + __attribute__nonnull__(pTHX_1) + __attribute__nonnull__(pTHX_2); + # ifdef DEBUGGING STATIC void S_dump_exec_pos(pTHX_ const char *locinput, const regnode *scan, const char *loc_regeol, const char *loc_bostr, const char *loc_reg_starttry, const bool do_utf8) __attribute__nonnull__(pTHX_1) @@ -3830,19 +3867,11 @@ STATIC void S_utf8_mg_pos_cache_update(pTHX_ SV *sv, MAGIC **mgp, STRLEN byte, S __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); -STATIC STRLEN S_sv_pos_b2u_forwards(pTHX_ const U8 *s, const U8 *const target) - __attribute__nonnull__(pTHX_1) - __attribute__nonnull__(pTHX_2); - STATIC STRLEN S_sv_pos_b2u_midway(pTHX_ const U8 *s, const U8 *const target, const U8 *end, STRLEN endu) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2) __attribute__nonnull__(pTHX_3); -STATIC char * S_stringify_regexp(pTHX_ SV *sv, MAGIC *mg, STRLEN *lp) - __attribute__nonnull__(pTHX_1) - __attribute__nonnull__(pTHX_2); - STATIC char * S_F0convert(NV nv, char *endbuf, STRLEN *len) __attribute__nonnull__(2) __attribute__nonnull__(3); @@ -3889,6 +3918,7 @@ STATIC SV* S_tokeq(pTHX_ SV *sv) __attribute__nonnull__(pTHX_1); STATIC int S_pending_ident(pTHX); +STATIC void S_readpipe_override(pTHX); STATIC char* S_scan_const(pTHX_ char *start) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); @@ -3931,6 +3961,12 @@ STATIC char* S_scan_word(pTHX_ char *s, char *dest, STRLEN destlen, int allow_pa __attribute__nonnull__(pTHX_2) __attribute__nonnull__(pTHX_5); +STATIC void S_update_debugger_info_pv(pTHX_ const char *buf, STRLEN len) + __attribute__nonnull__(pTHX_1); + +STATIC void S_update_debugger_info_sv(pTHX_ SV *orig_sv) + __attribute__nonnull__(pTHX_1); + STATIC char* S_skipspace(pTHX_ char *s) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1);