X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=proto.h;h=b1ec03b4803ac397ae81dc915106902f0a4d5973;hb=abdc98d4d1d4977a2f117cdf04cc23b0bad1e031;hp=5eea726b99e30adb66db5e631805f0857b8dd2e1;hpb=8e11feef835e00eadf3e49c408e281a3e0255459;p=p5sagit%2Fp5-mst-13.2.git diff --git a/proto.h b/proto.h index 5eea726..b1ec03b 100644 --- a/proto.h +++ b/proto.h @@ -3,7 +3,7 @@ * proto.h * * Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, - * 2000, 2001, 2002, 2003, 2004, 2005, 2006, by Larry Wall and others + * 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, by Larry Wall and others * * You may distribute under the terms of either the GNU General Public * License or the Artistic License, as specified in the README file. @@ -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); @@ -405,9 +405,7 @@ PERL_CALLCONV void Perl_do_chop(pTHX_ SV* asv, SV* sv) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); -PERL_CALLCONV bool Perl_do_close(pTHX_ GV* gv, bool not_implicit) - __attribute__nonnull__(pTHX_1); - +PERL_CALLCONV bool Perl_do_close(pTHX_ GV* gv, bool not_implicit); PERL_CALLCONV bool Perl_do_eof(pTHX_ GV* gv) __attribute__nonnull__(pTHX_1); @@ -441,6 +439,11 @@ PERL_CALLCONV bool Perl_do_exec3(pTHX_ const char* cmd, int fd, int do_report) #endif PERL_CALLCONV void Perl_do_execfree(pTHX); +#ifdef PERL_IN_DOIO_C +STATIC void S_exec_failed(pTHX_ const char *cmd, int fd, int do_report) + __attribute__nonnull__(pTHX_1); + +#endif #if defined(HAS_MSG) || defined(HAS_SEM) || defined(HAS_SHM) PERL_CALLCONV I32 Perl_do_ipcctl(pTHX_ I32 optype, SV** mark, SV** sp) __attribute__nonnull__(pTHX_2) @@ -585,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) @@ -731,9 +737,7 @@ PERL_CALLCONV void Perl_hv_ksplit(pTHX_ HV* hv, IV newmax) __attribute__nonnull__(pTHX_1); */ PERL_CALLCONV HV * Perl_refcounted_he_chain_2hv(pTHX_ const struct refcounted_he *c); -PERL_CALLCONV SV * Perl_refcounted_he_fetch(pTHX_ const struct refcounted_he *chain, SV *keysv, const char *key, STRLEN klen, int flags, U32 hash) - __attribute__nonnull__(pTHX_1); - +PERL_CALLCONV SV * Perl_refcounted_he_fetch(pTHX_ const struct refcounted_he *chain, SV *keysv, const char *key, STRLEN klen, int flags, U32 hash); PERL_CALLCONV void Perl_refcounted_he_free(pTHX_ struct refcounted_he *he); PERL_CALLCONV struct refcounted_he * Perl_refcounted_he_new(pTHX_ struct refcounted_he *const parent, SV *const key, SV *const value); PERL_CALLCONV SV** Perl_hv_store(pTHX_ HV* tb, const char* key, I32 klen, SV* val, U32 hash); @@ -1004,15 +1008,13 @@ 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); PERL_CALLCONV void Perl_leave_scope(pTHX_ I32 base); PERL_CALLCONV void Perl_lex_end(pTHX); -PERL_CALLCONV void Perl_lex_start(pTHX_ SV* line) - __attribute__nonnull__(pTHX_1); - +PERL_CALLCONV void Perl_lex_start(pTHX_ SV* line); PERL_CALLCONV void Perl_op_null(pTHX_ OP* o) __attribute__nonnull__(pTHX_1); @@ -1765,7 +1767,10 @@ PERL_CALLCONV AV* Perl_get_av(pTHX_ const char* name, I32 create) PERL_CALLCONV HV* Perl_get_hv(pTHX_ const char* name, I32 create) __attribute__nonnull__(pTHX_1); -PERL_CALLCONV CV* Perl_get_cv(pTHX_ const char* name, I32 create) +PERL_CALLCONV CV* Perl_get_cv(pTHX_ const char* name, I32 flags) + __attribute__nonnull__(pTHX_1); + +PERL_CALLCONV CV* Perl_get_cvn_flags(pTHX_ const char* name, STRLEN len, I32 flags) __attribute__nonnull__(pTHX_1); PERL_CALLCONV int Perl_init_i18nl10n(pTHX_ int printwarn); @@ -1830,11 +1835,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) @@ -1854,6 +1874,12 @@ PERL_CALLCONV regnode* Perl_regnext(pTHX_ regnode* p) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); +PERL_CALLCONV SV* Perl_reg_named_buff_get(pTHX_ SV* namesv, const REGEXP * const from_re, U32 flags) + __attribute__nonnull__(pTHX_1); + +PERL_CALLCONV SV* Perl_reg_numbered_buff_get(pTHX_ I32 paren, const REGEXP * const rx, SV* usesv, U32 flags) + __attribute__nonnull__(pTHX_2); + PERL_CALLCONV void Perl_regprop(pTHX_ const regexp *prog, SV* sv, const regnode* o) __attribute__nonnull__(pTHX_2) __attribute__nonnull__(pTHX_3); @@ -2207,6 +2233,11 @@ PERL_CALLCONV bool Perl_sv_derived_from(pTHX_ SV* sv, const char* name) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); +PERL_CALLCONV bool Perl_sv_does(pTHX_ SV* sv, const char* name) + __attribute__warn_unused_result__ + __attribute__nonnull__(pTHX_1) + __attribute__nonnull__(pTHX_2); + PERL_CALLCONV I32 Perl_sv_eq(pTHX_ SV* sv1, SV* sv2); PERL_CALLCONV void Perl_sv_free(pTHX_ SV* sv); PERL_CALLCONV void Perl_sv_free2(pTHX_ SV* sv) @@ -2236,7 +2267,7 @@ PERL_CALLCONV STRLEN Perl_sv_len_utf8(pTHX_ SV* sv); PERL_CALLCONV void Perl_sv_magic(pTHX_ SV* sv, SV* obj, int how, const char* name, I32 namlen) __attribute__nonnull__(pTHX_1); -PERL_CALLCONV MAGIC * Perl_sv_magicext(pTHX_ SV* sv, SV* obj, int how, MGVTBL *vtbl, const char* name, I32 namlen) +PERL_CALLCONV MAGIC * Perl_sv_magicext(pTHX_ SV* sv, SV* obj, int how, const MGVTBL *vtbl, const char* name, I32 namlen) __attribute__nonnull__(pTHX_1); PERL_CALLCONV SV* Perl_sv_mortalcopy(pTHX_ SV* oldsv) @@ -2274,7 +2305,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); @@ -2351,7 +2382,7 @@ PERL_CALLCONV void Perl_sv_unref_flags(pTHX_ SV* sv, U32 flags) PERL_CALLCONV void Perl_sv_untaint(pTHX_ SV* sv) __attribute__nonnull__(pTHX_1); -PERL_CALLCONV void Perl_sv_upgrade(pTHX_ SV* sv, U32 mt) +PERL_CALLCONV void Perl_sv_upgrade(pTHX_ SV* sv, svtype new_type) __attribute__nonnull__(pTHX_1); /* PERL_CALLCONV void Perl_sv_usepvn(pTHX_ SV* sv, char* ptr, STRLEN len) @@ -2570,6 +2601,9 @@ PERL_CALLCONV int Perl_yyerror(pTHX_ const char* s) PERL_CALLCONV int Perl_yylex(pTHX); PERL_CALLCONV int Perl_yyparse(pTHX); +PERL_CALLCONV void Perl_parser_free(pTHX_ const yy_parser *) + __attribute__nonnull__(pTHX_1); + PERL_CALLCONV int Perl_yywarn(pTHX_ const char* s) __attribute__nonnull__(pTHX_1); @@ -2664,6 +2698,14 @@ PERL_CALLCONV char* Perl_pv_display(pTHX_ SV *dsv, const char *pv, STRLEN cur, S __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); +PERL_CALLCONV char* Perl_pv_escape(pTHX_ SV *dsv, char const * const str, const STRLEN count, const STRLEN max, STRLEN * const escaped, const U32 flags) + __attribute__nonnull__(pTHX_1) + __attribute__nonnull__(pTHX_2); + +PERL_CALLCONV char* Perl_pv_pretty(pTHX_ SV *dsv, char const * const str, const STRLEN count, const STRLEN max, char const * const start_color, char const * const end_color, const U32 flags) + __attribute__nonnull__(pTHX_1) + __attribute__nonnull__(pTHX_2); + PERL_CALLCONV void Perl_dump_indent(pTHX_ I32 level, PerlIO *file, const char* pat, ...) __attribute__format__(__printf__,pTHX_3,pTHX_4) __attribute__nonnull__(pTHX_2) @@ -2675,18 +2717,15 @@ PERL_CALLCONV void Perl_dump_vindent(pTHX_ I32 level, PerlIO *file, const char* PERL_CALLCONV void Perl_do_gv_dump(pTHX_ I32 level, PerlIO *file, const char *name, GV *sv) __attribute__nonnull__(pTHX_2) - __attribute__nonnull__(pTHX_3) - __attribute__nonnull__(pTHX_4); + __attribute__nonnull__(pTHX_3); PERL_CALLCONV void Perl_do_gvgv_dump(pTHX_ I32 level, PerlIO *file, const char *name, GV *sv) __attribute__nonnull__(pTHX_2) - __attribute__nonnull__(pTHX_3) - __attribute__nonnull__(pTHX_4); + __attribute__nonnull__(pTHX_3); PERL_CALLCONV void Perl_do_hv_dump(pTHX_ I32 level, PerlIO *file, const char *name, HV *sv) __attribute__nonnull__(pTHX_2) - __attribute__nonnull__(pTHX_3) - __attribute__nonnull__(pTHX_4); + __attribute__nonnull__(pTHX_3); PERL_CALLCONV void Perl_do_magic_dump(pTHX_ I32 level, PerlIO *file, const MAGIC *mg, I32 nest, I32 maxnest, bool dumpops, STRLEN pvlim) __attribute__nonnull__(pTHX_2) @@ -2822,6 +2861,11 @@ PERL_CALLCONV void Perl_rvpv_dup(pTHX_ SV* dstr, const SV *sstr, CLONE_PARAMS* p __attribute__nonnull__(pTHX_2) __attribute__nonnull__(pTHX_3); +PERL_CALLCONV yy_parser* Perl_parser_dup(pTHX_ const yy_parser *proto, CLONE_PARAMS* param) + __attribute__nonnull__(pTHX_1) + __attribute__nonnull__(pTHX_2); + +#endif PERL_CALLCONV PTR_TBL_t* Perl_ptr_table_new(pTHX) __attribute__malloc__ __attribute__warn_unused_result__; @@ -2840,6 +2884,7 @@ PERL_CALLCONV void Perl_ptr_table_split(pTHX_ PTR_TBL_t *tbl) PERL_CALLCONV void Perl_ptr_table_clear(pTHX_ PTR_TBL_t *tbl); PERL_CALLCONV void Perl_ptr_table_free(pTHX_ PTR_TBL_t *tbl); +#if defined(USE_ITHREADS) # if defined(HAVE_INTERP_INTERN) PERL_CALLCONV void Perl_sys_intern_dup(pTHX_ struct interp_intern* src, struct interp_intern* dst) __attribute__nonnull__(pTHX_1) @@ -2861,12 +2906,6 @@ PERL_CALLCONV char * Perl_custom_op_desc(pTHX_ const OP* op) __attribute__nonnull__(pTHX_1); -#if defined(PERL_OLD_COPY_ON_WRITE) -PERL_CALLCONV int Perl_sv_release_IVX(pTHX_ SV *sv) - __attribute__nonnull__(pTHX_1); - -#endif - PERL_CALLCONV void Perl_sv_nosharing(pTHX_ SV *sv); /* PERL_CALLCONV void Perl_sv_nolocking(pTHX_ SV *sv); */ #ifdef NO_MATHOMS @@ -2909,12 +2948,15 @@ STATIC I32 S_do_trans_complex_utf8(pTHX_ SV * const sv) STATIC void S_gv_init_sv(pTHX_ GV *gv, I32 sv_type) __attribute__nonnull__(pTHX_1); -STATIC void S_require_errno(pTHX_ GV *gv) - __attribute__nonnull__(pTHX_1); +STATIC HV* S_require_tie_mod(pTHX_ GV *gv, const char *varpv, SV* namesv, const char *methpv, const U32 flags) + __attribute__nonnull__(pTHX_1) + __attribute__nonnull__(pTHX_2) + __attribute__nonnull__(pTHX_3) + __attribute__nonnull__(pTHX_4); #endif -PERL_CALLCONV void* Perl_get_arena(pTHX_ int svtype) +PERL_CALLCONV void* Perl_get_arena(pTHX_ size_t svtype, U32 misc) __attribute__malloc__ __attribute__warn_unused_result__; @@ -2945,6 +2987,11 @@ STATIC HEK* S_share_hek_flags(pTHX_ const char* sv, I32 len, U32 hash, int flags __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); +STATIC SV* S_hv_magic_uvar_xkey(pTHX_ HV* hv, SV* keysv, int action) + __attribute__warn_unused_result__ + __attribute__nonnull__(pTHX_1) + __attribute__nonnull__(pTHX_2); + STATIC void S_hv_notallowed(pTHX_ int flags, const char *key, I32 klen, const char *msg) __attribute__noreturn__ __attribute__nonnull__(pTHX_2) @@ -3111,10 +3158,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); @@ -3289,6 +3332,14 @@ STATIC SV* S_refto(pTHX_ SV* sv) __attribute__nonnull__(pTHX_1); #endif +#if defined(PERL_IN_PP_C) || defined(PERL_IN_PP_HOT_C) || defined(PERL_DECL_PROT) +PERL_CALLCONV GV* Perl_softref2xv(pTHX_ SV *const sv, const char *const what, const U32 type, SV ***spp) + __attribute__warn_unused_result__ + __attribute__nonnull__(pTHX_1) + __attribute__nonnull__(pTHX_2) + __attribute__nonnull__(pTHX_4); + +#endif #if defined(PERL_IN_PP_PACK_C) || defined(PERL_DECL_PROT) STATIC I32 S_unpack_rec(pTHX_ struct tempsym* symptr, const char *s, const char *strbeg, const char *strend, const char **new_s) @@ -3435,11 +3486,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); @@ -3483,6 +3529,10 @@ STATIC I32 S_sortcv_stacked(pTHX_ SV *a, SV *b) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); +STATIC void S_qsortsvu(pTHX_ SV** array, size_t num_elts, SVCOMPARE_t compare) + __attribute__nonnull__(pTHX_1) + __attribute__nonnull__(pTHX_3); + #endif #if defined(PERL_IN_PP_SYS_C) || defined(PERL_DECL_PROT) @@ -3536,11 +3586,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); @@ -3549,7 +3603,10 @@ STATIC void S_regtail(pTHX_ struct RExC_state_t *state, regnode *p, const regnod __attribute__nonnull__(pTHX_2) __attribute__nonnull__(pTHX_3); -STATIC U8 S_regtail_study(pTHX_ struct RExC_state_t *state, regnode *p, const regnode *val, U32 depth) +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) __attribute__nonnull__(pTHX_3); @@ -3562,9 +3619,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) @@ -3591,13 +3649,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); @@ -3613,47 +3672,60 @@ STATIC I32 S_regpposixcc(pTHX_ struct RExC_state_t* state, I32 value) STATIC void S_checkposixcc(pTHX_ struct RExC_state_t* state) __attribute__nonnull__(pTHX_1); -STATIC I32 S_make_trie(pTHX_ struct RExC_state_t* state, regnode *startbranch, regnode *first, regnode *last, regnode *tail, U32 flags, U32 depth) +STATIC I32 S_make_trie(pTHX_ struct RExC_state_t* state, regnode *startbranch, regnode *first, regnode *last, regnode *tail, U32 word_count, U32 flags, U32 depth) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2) __attribute__nonnull__(pTHX_3) __attribute__nonnull__(pTHX_4) __attribute__nonnull__(pTHX_5); +STATIC void S_make_trie_failtable(pTHX_ struct RExC_state_t* state, regnode *source, regnode *node, U32 depth) + __attribute__nonnull__(pTHX_1) + __attribute__nonnull__(pTHX_2) + __attribute__nonnull__(pTHX_3); + # ifdef DEBUGGING -STATIC const regnode* S_dumpuntil(pTHX_ const regexp *r, const regnode *start, const regnode *node, const regnode *last, SV* sv, I32 l) +STATIC const regnode* S_dumpuntil(pTHX_ const regexp *r, const regnode *start, const regnode *node, const regnode *last, const regnode *plast, SV* sv, I32 indent, U32 depth) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2) __attribute__nonnull__(pTHX_3) - __attribute__nonnull__(pTHX_5); + __attribute__nonnull__(pTHX_6); 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) + __attribute__nonnull__(pTHX_2) + __attribute__nonnull__(pTHX_3); # endif #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); @@ -3672,12 +3744,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) @@ -3690,6 +3770,26 @@ 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) + __attribute__nonnull__(pTHX_2) + __attribute__nonnull__(pTHX_3) + __attribute__nonnull__(pTHX_4) + __attribute__nonnull__(pTHX_5); + +STATIC void S_debug_start_match(pTHX_ const regexp *prog, const bool do_utf8, const char *start, const char *end, const char *blurb) + __attribute__nonnull__(pTHX_1) + __attribute__nonnull__(pTHX_3) + __attribute__nonnull__(pTHX_4) + __attribute__nonnull__(pTHX_5); + +# endif #endif #if defined(PERL_IN_DUMP_C) || defined(PERL_DECL_PROT) @@ -3780,28 +3880,20 @@ 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); # if defined(PERL_OLD_COPY_ON_WRITE) -STATIC void S_sv_release_COW(pTHX_ SV *sv, const char *pvx, STRLEN len, SV *after) +STATIC void S_sv_release_COW(pTHX_ SV *sv, const char *pvx, SV *after) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2) - __attribute__nonnull__(pTHX_4); + __attribute__nonnull__(pTHX_3); # endif STATIC SV * S_more_sv(pTHX); @@ -3817,20 +3909,11 @@ STATIC void S_glob_assign_ref(pTHX_ SV *dstr, SV *sstr) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); -# if defined(USE_ITHREADS) STATIC PTR_TBL_ENT_t * S_ptr_table_find(PTR_TBL_t *tbl, const void *sv) __attribute__warn_unused_result__ __attribute__nonnull__(1) __attribute__nonnull__(2); -# endif -STATIC SV * S_find_hash_subscript(pTHX_ HV *hv, SV *val) - __attribute__nonnull__(pTHX_2); - -STATIC I32 S_find_array_subscript(pTHX_ AV *av, SV *val) - __attribute__nonnull__(pTHX_2); - -STATIC SV * S_find_uninit_var(pTHX_ OP *obase, SV *uninit_sv, bool match); #endif #if defined(PERL_IN_TOKE_C) || defined(PERL_DECL_PROT) @@ -3845,7 +3928,7 @@ STATIC char* S_force_word(pTHX_ char *start, int token, int check_keyword, int a 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); @@ -3888,6 +3971,7 @@ 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(pTHX_ SV *orig_sv, const char *buf, STRLEN len); STATIC char* S_skipspace(pTHX_ char *s) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); @@ -3970,7 +4054,7 @@ STATIC void S_printbuf(pTHX_ const char* fmt, const char* s) #endif #if defined(PERL_IN_UNIVERSAL_C) || defined(PERL_DECL_PROT) -STATIC bool S_isa_lookup(pTHX_ HV *stash, const char *name, HV *name_stash, int len, int level) +STATIC bool S_isa_lookup(pTHX_ HV *stash, const char *name, const HV * const name_stash, int len, int level) __attribute__nonnull__(pTHX_2); #endif @@ -4221,7 +4305,14 @@ PERL_CALLCONV SV* Perl_magic_scalarpack(pTHX_ HV* hv, MAGIC* mg) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); -#ifdef PERL_IN_SV_C + +#if defined(PERL_IN_SV_C) || defined(PERL_DECL_PROT) +STATIC SV * S_find_hash_subscript(pTHX_ HV *hv, SV *val) + __attribute__nonnull__(pTHX_2); + +STATIC I32 S_find_array_subscript(pTHX_ AV *av, SV *val) + __attribute__nonnull__(pTHX_2); + STATIC SV* S_find_uninit_var(pTHX_ OP* obase, SV* uninit_sv, bool top); #endif @@ -4363,10 +4454,27 @@ PERL_CALLCONV int Perl_my_vsnprintf(char *buffer, const Size_t len, const char * PERL_CALLCONV void Perl_my_clearenv(pTHX); #ifdef PERL_IMPLICIT_CONTEXT +#ifdef PERL_GLOBAL_STRUCT_PRIVATE +PERL_CALLCONV void* Perl_my_cxt_init(pTHX_ const char *my_cxt_key, size_t size) + __attribute__nonnull__(pTHX_1); + +PERL_CALLCONV int Perl_my_cxt_index(pTHX_ const char *my_cxt_key) + __attribute__nonnull__(pTHX_1); + +#else PERL_CALLCONV void* Perl_my_cxt_init(pTHX_ int *index, size_t size) __attribute__nonnull__(pTHX_1); #endif +#endif + +#ifndef HAS_STRLCAT +PERL_CALLCONV Size_t Perl_my_strlcat(char *dst, const char *src, Size_t size); +#endif + +#ifndef HAS_STRLCPY +PERL_CALLCONV Size_t Perl_my_strlcpy(char *dst, const char *src, Size_t size); +#endif #ifdef PERL_MAD PERL_CALLCONV void Perl_pad_peg(const char* s)