X-Git-Url: https://perl5.git.perl.org/perl5.git/blobdiff_plain/1067df30ae91aad06ce62722a2ebd437e25358bf..d30fb84472a75fa446629f16d12e1ced09787ce4:/proto.h diff --git a/proto.h b/proto.h index 52f2098..63d1c9c 100644 --- a/proto.h +++ b/proto.h @@ -23,6 +23,9 @@ PERL_CALLCONV int Perl_Gv_AMupdate(pTHX_ HV* stash, bool destructing) assert(stash) PERL_CALLCONV const char * Perl_PerlIO_context_layers(pTHX_ const char *mode); +PERL_CALLCONV_NO_RET void Perl_croak_memory_wrap(void) + __attribute__noreturn__; + PERL_CALLCONV void* Perl_Slab_Alloc(pTHX_ size_t sz) __attribute__malloc__ __attribute__warn_unused_result__; @@ -677,9 +680,6 @@ PERL_CALLCONV_NO_RET void Perl_croak(pTHX_ const char* pat, ...) __attribute__noreturn__ __attribute__format__null_ok__(__printf__,pTHX_1,pTHX_2); -PERL_STATIC_NO_RET void S_croak_memory_wrap(void) - __attribute__noreturn__; - PERL_CALLCONV_NO_RET void Perl_croak_no_mem(void) __attribute__noreturn__; @@ -1087,6 +1087,7 @@ PERL_CALLCONV void Perl_finalize_optree(pTHX_ OP* o) #define PERL_ARGS_ASSERT_FINALIZE_OPTREE \ assert(o) +PERL_CALLCONV CV * Perl_find_lexical_cv(pTHX_ PADOFFSET off); PERL_CALLCONV CV* Perl_find_runcv(pTHX_ U32 *db_seqp) __attribute__warn_unused_result__; @@ -1169,7 +1170,7 @@ PERL_CALLCONV void Perl_get_db_sub(pTHX_ SV **svp, CV *cv) #define PERL_ARGS_ASSERT_GET_DB_SUB \ assert(cv) -PERL_CALLCONV void Perl_get_hash_seed(pTHX_ unsigned char *seed_buffer) +PERL_CALLCONV void Perl_get_hash_seed(pTHX_ unsigned char * const seed_buffer) __attribute__nonnull__(pTHX_1); #define PERL_ARGS_ASSERT_GET_HASH_SEED \ assert(seed_buffer) @@ -1548,7 +1549,7 @@ PERL_CALLCONV void Perl_hv_ename_delete(pTHX_ HV *hv, const char *name, U32 len, #define PERL_ARGS_ASSERT_HV_FETCH_ENT \ assert(keysv) -PERL_CALLCONV STRLEN Perl_hv_fill(pTHX_ HV const *const hv) +PERL_CALLCONV STRLEN Perl_hv_fill(pTHX_ HV *const hv) __attribute__nonnull__(pTHX_1); #define PERL_ARGS_ASSERT_HV_FILL \ assert(hv) @@ -1635,6 +1636,11 @@ PERL_CALLCONV void Perl_hv_placeholders_set(pTHX_ HV *hv, I32 ph) #define PERL_ARGS_ASSERT_HV_PLACEHOLDERS_SET \ assert(hv) +PERL_CALLCONV void Perl_hv_rand_set(pTHX_ HV *hv, U32 new_xhv_rand) + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_HV_RAND_SET \ + assert(hv) + PERL_CALLCONV I32* Perl_hv_riter_p(pTHX_ HV *hv) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); @@ -2274,7 +2280,7 @@ PERL_CALLCONV int Perl_magic_killbackrefs(pTHX_ SV *sv, MAGIC *mg) #define PERL_ARGS_ASSERT_MAGIC_KILLBACKREFS \ assert(sv); assert(mg) -PERL_CALLCONV SV* Perl_magic_methcall(pTHX_ SV *sv, const MAGIC *mg, const char *meth, U32 flags, U32 argc, ...) +PERL_CALLCONV SV* Perl_magic_methcall(pTHX_ SV *sv, const MAGIC *mg, SV *meth, U32 flags, U32 argc, ...) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2) __attribute__nonnull__(pTHX_3); @@ -2623,11 +2629,6 @@ PERL_CALLCONV char * Perl_my_strftime(pTHX_ const char *fmt, int sec, int min, i #define PERL_ARGS_ASSERT_MY_STRFTIME \ assert(fmt) -PERL_CALLCONV void Perl_my_swabn(void* ptr, int n) - __attribute__nonnull__(1); -#define PERL_ARGS_ASSERT_MY_SWABN \ - assert(ptr) - PERL_CALLCONV void Perl_my_unexec(pTHX); PERL_CALLCONV int Perl_my_vsnprintf(char *buffer, const Size_t len, const char *format, va_list ap) __attribute__nonnull__(1) @@ -3251,12 +3252,13 @@ PERL_CALLCONV REGEXP* Perl_re_compile(pTHX_ SV * const pattern, U32 orig_rx_flag #define PERL_ARGS_ASSERT_RE_COMPILE \ assert(pattern) -PERL_CALLCONV char* Perl_re_intuit_start(pTHX_ REGEXP * const rx, SV* sv, char* strpos, char* strend, const U32 flags, re_scream_pos_data *data) +PERL_CALLCONV char* Perl_re_intuit_start(pTHX_ REGEXP * const rx, SV* sv, const char* const strbeg, char* strpos, char* strend, const U32 flags, re_scream_pos_data *data) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_3) - __attribute__nonnull__(pTHX_4); + __attribute__nonnull__(pTHX_4) + __attribute__nonnull__(pTHX_5); #define PERL_ARGS_ASSERT_RE_INTUIT_START \ - assert(rx); assert(strpos); assert(strend) + assert(rx); assert(strbeg); assert(strpos); assert(strend) PERL_CALLCONV SV* Perl_re_intuit_string(pTHX_ REGEXP *const r) __attribute__nonnull__(pTHX_1); @@ -4541,7 +4543,7 @@ PERL_CALLCONV void Perl_taint_proper(pTHX_ const char* f, const char *const s) #define PERL_ARGS_ASSERT_TAINT_PROPER \ assert(s) -PERL_CALLCONV OP * Perl_tied_method(pTHX_ const char *const methname, SV **sp, SV *const sv, const MAGIC *const mg, const U32 flags, U32 argc, ...) +PERL_CALLCONV OP * Perl_tied_method(pTHX_ SV *methname, SV **sp, SV *const sv, const MAGIC *const mg, const U32 flags, U32 argc, ...) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2) __attribute__nonnull__(pTHX_3) @@ -4736,6 +4738,11 @@ PERL_CALLCONV UV Perl_valid_utf8_to_uvuni(pTHX_ const U8 *s, STRLEN *retlen) #define PERL_ARGS_ASSERT_VALID_UTF8_TO_UVUNI \ assert(s) +PERL_CALLCONV bool Perl_validate_proto(pTHX_ SV *name, SV *proto, bool warn) + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_VALIDATE_PROTO \ + assert(name) + PERL_CALLCONV int Perl_vcmp(pTHX_ SV *lhv, SV *rhv) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); @@ -5186,6 +5193,7 @@ STATIC void S_put_byte(pTHX_ SV* sv, int c) assert(sv) STATIC void S_regdump_extflags(pTHX_ const char *lead, const U32 flags); +STATIC void S_regdump_intflags(pTHX_ const char *lead, const U32 flags); STATIC U8 S_regtail_study(pTHX_ struct RExC_state_t *pRExC_state, regnode *p, const regnode *val, U32 depth) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2) @@ -5340,20 +5348,6 @@ PERL_CALLCONV MEM_SIZE Perl_malloced_size(void *p) assert(p) #endif -#if defined(MYSWAP) -PERL_CALLCONV long Perl_my_htonl(pTHX_ long l) - __attribute__warn_unused_result__ - __attribute__pure__; - -PERL_CALLCONV long Perl_my_ntohl(pTHX_ long l) - __attribute__warn_unused_result__ - __attribute__pure__; - -PERL_CALLCONV short Perl_my_swap(pTHX_ short s) - __attribute__warn_unused_result__ - __attribute__pure__; - -#endif #if defined(NO_MATHOMS) /* PERL_CALLCONV void Perl_sv_nounlocking(pTHX_ SV *sv); */ #endif @@ -5736,7 +5730,7 @@ STATIC HE* S_new_he(pTHX) __attribute__malloc__ __attribute__warn_unused_result__; -STATIC U32 S_ptr_hash(PTRV u); +PERL_STATIC_INLINE U32 S_ptr_hash(PTRV u); STATIC SV * S_refcounted_he_value(pTHX_ const struct refcounted_he *he) __attribute__nonnull__(pTHX_1); #define PERL_ARGS_ASSERT_REFCOUNTED_HE_VALUE \ @@ -5774,6 +5768,7 @@ PERL_CALLCONV SV* Perl_hfree_next_entry(pTHX_ HV *hv, STRLEN *indexp) #endif #if defined(PERL_IN_LOCALE_C) # if defined(USE_LOCALE_NUMERIC) || defined(USE_LOCALE_COLLATE) +STATIC bool S_is_cur_LC_category_utf8(pTHX_ int category); STATIC char* S_stdize_locale(pTHX_ char* locs) __attribute__nonnull__(pTHX_1); #define PERL_ARGS_ASSERT_STDIZE_LOCALE \ @@ -5782,14 +5777,14 @@ STATIC char* S_stdize_locale(pTHX_ char* locs) # endif #endif #if defined(PERL_IN_MG_C) -STATIC SV* S_magic_methcall1(pTHX_ SV *sv, const MAGIC *mg, const char *meth, U32 flags, int n, SV *val) +STATIC SV* S_magic_methcall1(pTHX_ SV *sv, const MAGIC *mg, SV *meth, U32 flags, int n, SV *val) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2) __attribute__nonnull__(pTHX_3); #define PERL_ARGS_ASSERT_MAGIC_METHCALL1 \ assert(sv); assert(mg); assert(meth) -STATIC int S_magic_methpack(pTHX_ SV *sv, const MAGIC *mg, const char *meth) +STATIC int S_magic_methpack(pTHX_ SV *sv, const MAGIC *mg, SV *meth) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2) __attribute__nonnull__(pTHX_3); @@ -5797,9 +5792,9 @@ STATIC int S_magic_methpack(pTHX_ SV *sv, const MAGIC *mg, const char *meth) assert(sv); assert(mg); assert(meth) STATIC void S_restore_magic(pTHX_ const void *p); -STATIC void S_save_magic(pTHX_ I32 mgs_ix, SV *sv) +STATIC void S_save_magic_flags(pTHX_ I32 mgs_ix, SV *sv, U32 flags) __attribute__nonnull__(pTHX_2); -#define PERL_ARGS_ASSERT_SAVE_MAGIC \ +#define PERL_ARGS_ASSERT_SAVE_MAGIC_FLAGS \ assert(sv) STATIC void S_unwind_handler_stack(pTHX_ const void *p); @@ -5850,19 +5845,19 @@ STATIC void S_apply_attrs_my(pTHX_ HV *stash, OP *target, OP *attrs, OP **imopsp #define PERL_ARGS_ASSERT_APPLY_ATTRS_MY \ assert(stash); assert(target); assert(imopsp) -STATIC void S_bad_type_pv(pTHX_ I32 n, const char *t, const char *name, U32 flags, const OP *kid) +STATIC void S_bad_type_gv(pTHX_ I32 n, const char *t, GV *gv, U32 flags, const OP *kid) __attribute__nonnull__(pTHX_2) __attribute__nonnull__(pTHX_3) __attribute__nonnull__(pTHX_5); -#define PERL_ARGS_ASSERT_BAD_TYPE_PV \ - assert(t); assert(name); assert(kid) +#define PERL_ARGS_ASSERT_BAD_TYPE_GV \ + assert(t); assert(gv); assert(kid) -STATIC void S_bad_type_sv(pTHX_ I32 n, const char *t, SV *namesv, U32 flags, const OP *kid) +STATIC void S_bad_type_pv(pTHX_ I32 n, const char *t, const char *name, U32 flags, const OP *kid) __attribute__nonnull__(pTHX_2) __attribute__nonnull__(pTHX_3) __attribute__nonnull__(pTHX_5); -#define PERL_ARGS_ASSERT_BAD_TYPE_SV \ - assert(t); assert(namesv); assert(kid) +#define PERL_ARGS_ASSERT_BAD_TYPE_PV \ + assert(t); assert(name); assert(kid) STATIC void S_cop_free(pTHX_ COP *cop) __attribute__nonnull__(pTHX_1); @@ -6214,10 +6209,10 @@ STATIC bool S_matcher_matches_sv(pTHX_ PMOP* matcher, SV* sv) STATIC bool S_num_overflow(NV value, I32 fldsize, I32 frcsize) __attribute__warn_unused_result__; -STATIC bool S_path_is_absolute(const char *name) +PERL_STATIC_INLINE bool S_path_is_searchable(const char *name) __attribute__warn_unused_result__ __attribute__nonnull__(1); -#define PERL_ARGS_ASSERT_PATH_IS_ABSOLUTE \ +#define PERL_ARGS_ASSERT_PATH_IS_SEARCHABLE \ assert(name) STATIC I32 S_run_user_filter(pTHX_ int idx, SV *buf_sv, int maxlen) @@ -6258,7 +6253,7 @@ STATIC SV* S_method_common(pTHX_ SV* meth, U32* hashp) #endif #if defined(PERL_IN_PP_PACK_C) -STATIC char * S_bytes_to_uni(const U8 *start, STRLEN len, char *dest) +STATIC char * S_bytes_to_uni(const U8 *start, STRLEN len, char *dest, const bool needs_swap) __attribute__warn_unused_result__ __attribute__nonnull__(1) __attribute__nonnull__(3); @@ -6904,7 +6899,7 @@ STATIC SV* S_core_regclass_swash(pTHX_ const regexp *prog, const struct regnode #define PERL_ARGS_ASSERT_CORE_REGCLASS_SWASH \ assert(node) -STATIC char* S_find_byclass(pTHX_ regexp * prog, const regnode *c, char *s, const char *strend, regmatch_info *reginfo, bool is_utf_pat) +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) @@ -6969,13 +6964,14 @@ STATIC I32 S_regmatch(pTHX_ regmatch_info *reginfo, char *startpos, regnode *pro #define PERL_ARGS_ASSERT_REGMATCH \ assert(reginfo); assert(startpos); assert(prog) -STATIC I32 S_regrepeat(pTHX_ regexp *prog, char **startposp, const regnode *p, I32 max, int depth, bool is_utf8_pat) +STATIC I32 S_regrepeat(pTHX_ regexp *prog, char **startposp, const regnode *p, regmatch_info *const reginfo, I32 max, int depth) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2) - __attribute__nonnull__(pTHX_3); + __attribute__nonnull__(pTHX_3) + __attribute__nonnull__(pTHX_4); #define PERL_ARGS_ASSERT_REGREPEAT \ - assert(prog); assert(startposp); assert(p) + assert(prog); assert(startposp); assert(p); assert(reginfo) STATIC I32 S_regtry(pTHX_ regmatch_info *reginfo, char **startposp) __attribute__warn_unused_result__ @@ -7227,7 +7223,7 @@ STATIC char* S_force_version(pTHX_ char *s, int guessing) #define PERL_ARGS_ASSERT_FORCE_VERSION \ assert(s) -STATIC char* S_force_word(pTHX_ char *start, int token, int check_keyword, int allow_pack, int allow_tick) +STATIC char* S_force_word(pTHX_ char *start, int token, int check_keyword, int allow_pack) __attribute__nonnull__(pTHX_1); #define PERL_ARGS_ASSERT_FORCE_WORD \ assert(start) @@ -7452,7 +7448,7 @@ PERL_CALLCONV UV Perl__to_upper_title_latin1(pTHX_ const U8 c, U8 *p, STRLEN *le #endif #if defined(PERL_IN_UTF8_C) || defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_REGEXEC_C) -PERL_CALLCONV UV Perl__to_fold_latin1(pTHX_ const U8 c, U8 *p, STRLEN *lenp, const bool flags) +PERL_CALLCONV UV Perl__to_fold_latin1(pTHX_ const U8 c, U8 *p, STRLEN *lenp, const unsigned int flags) __attribute__nonnull__(pTHX_2) __attribute__nonnull__(pTHX_3); #define PERL_ARGS_ASSERT__TO_FOLD_LATIN1 \ @@ -7606,78 +7602,6 @@ PERL_CALLCONV void Perl_xmldump_vindent(pTHX_ I32 level, PerlIO *file, const cha assert(file); assert(pat) #endif -#if defined(PERL_NEED_MY_BETOH16) -PERL_CALLCONV U16 Perl_my_betoh16(U16 n); -#endif -#if defined(PERL_NEED_MY_BETOH32) -PERL_CALLCONV U32 Perl_my_betoh32(U32 n); -#endif -#if defined(PERL_NEED_MY_BETOH64) -PERL_CALLCONV U64 Perl_my_betoh64(U64 n); -#endif -#if defined(PERL_NEED_MY_BETOHI) -PERL_CALLCONV int Perl_my_betohi(int n); -#endif -#if defined(PERL_NEED_MY_BETOHL) -PERL_CALLCONV long Perl_my_betohl(long n); -#endif -#if defined(PERL_NEED_MY_BETOHS) -PERL_CALLCONV short Perl_my_betohs(short n); -#endif -#if defined(PERL_NEED_MY_HTOBE16) -PERL_CALLCONV U16 Perl_my_htobe16(U16 n); -#endif -#if defined(PERL_NEED_MY_HTOBE32) -PERL_CALLCONV U32 Perl_my_htobe32(U32 n); -#endif -#if defined(PERL_NEED_MY_HTOBE64) -PERL_CALLCONV U64 Perl_my_htobe64(U64 n); -#endif -#if defined(PERL_NEED_MY_HTOBEI) -PERL_CALLCONV int Perl_my_htobei(int n); -#endif -#if defined(PERL_NEED_MY_HTOBEL) -PERL_CALLCONV long Perl_my_htobel(long n); -#endif -#if defined(PERL_NEED_MY_HTOBES) -PERL_CALLCONV short Perl_my_htobes(short n); -#endif -#if defined(PERL_NEED_MY_HTOLE16) -PERL_CALLCONV U16 Perl_my_htole16(U16 n); -#endif -#if defined(PERL_NEED_MY_HTOLE32) -PERL_CALLCONV U32 Perl_my_htole32(U32 n); -#endif -#if defined(PERL_NEED_MY_HTOLE64) -PERL_CALLCONV U64 Perl_my_htole64(U64 n); -#endif -#if defined(PERL_NEED_MY_HTOLEI) -PERL_CALLCONV int Perl_my_htolei(int n); -#endif -#if defined(PERL_NEED_MY_HTOLEL) -PERL_CALLCONV long Perl_my_htolel(long n); -#endif -#if defined(PERL_NEED_MY_HTOLES) -PERL_CALLCONV short Perl_my_htoles(short n); -#endif -#if defined(PERL_NEED_MY_LETOH16) -PERL_CALLCONV U16 Perl_my_letoh16(U16 n); -#endif -#if defined(PERL_NEED_MY_LETOH32) -PERL_CALLCONV U32 Perl_my_letoh32(U32 n); -#endif -#if defined(PERL_NEED_MY_LETOH64) -PERL_CALLCONV U64 Perl_my_letoh64(U64 n); -#endif -#if defined(PERL_NEED_MY_LETOHI) -PERL_CALLCONV int Perl_my_letohi(int n); -#endif -#if defined(PERL_NEED_MY_LETOHL) -PERL_CALLCONV long Perl_my_letohl(long n); -#endif -#if defined(PERL_NEED_MY_LETOHS) -PERL_CALLCONV short Perl_my_letohs(short n); -#endif #if defined(PERL_USES_PL_PIDSTATUS) && defined(PERL_IN_UTIL_C) STATIC void S_pidgone(pTHX_ Pid_t pid, int status); #endif