X-Git-Url: https://perl5.git.perl.org/perl5.git/blobdiff_plain/059703b088f44d5665f67fba0b9d80cad89085fd..4e8ee35f1af746a63f71461d067e654dd9500dad:/proto.h diff --git a/proto.h b/proto.h index 767c129..4b8beab 100644 --- a/proto.h +++ b/proto.h @@ -126,7 +126,7 @@ PERL_CALLCONV char * Perl__byte_dump_string(pTHX_ const U8 * const start, const PERL_CALLCONV void Perl__force_out_malformed_utf8_message(pTHX_ const U8 *const p, const U8 * const e, const U32 flags, const bool die_here); #define PERL_ARGS_ASSERT__FORCE_OUT_MALFORMED_UTF8_MESSAGE \ assert(p); assert(e) -PERL_CALLCONV Size_t Perl__inverse_folds(pTHX_ const UV cp, unsigned int * first_folds_to, const unsigned int ** remaining_folds_to) +PERL_CALLCONV Size_t Perl__inverse_folds(pTHX_ const UV cp, U32 * first_folds_to, const U32 ** remaining_folds_to) __attribute__warn_unused_result__; #define PERL_ARGS_ASSERT__INVERSE_FOLDS \ assert(first_folds_to); assert(remaining_folds_to) @@ -145,46 +145,21 @@ PERL_CALLCONV bool Perl__is_uni_perl_idstart(pTHX_ UV c) __attribute__warn_unused_result__; #define PERL_ARGS_ASSERT__IS_UNI_PERL_IDSTART -PERL_CALLCONV bool Perl__is_utf8_FOO_with_len(pTHX_ const U8 classnum, const U8 *p, const U8 * const e) +PERL_CALLCONV bool Perl__is_utf8_FOO(pTHX_ const U8 classnum, const U8 *p, const U8 * const e) __attribute__warn_unused_result__; -#define PERL_ARGS_ASSERT__IS_UTF8_FOO_WITH_LEN \ +#define PERL_ARGS_ASSERT__IS_UTF8_FOO \ assert(p); assert(e) -PERL_CALLCONV bool Perl__is_utf8_idcont(pTHX_ const U8 *p) +PERL_CALLCONV bool Perl__is_utf8_perl_idcont(pTHX_ const U8 *p, const U8 * const e) __attribute__warn_unused_result__; -#define PERL_ARGS_ASSERT__IS_UTF8_IDCONT \ - assert(p) - -PERL_CALLCONV bool Perl__is_utf8_idstart(pTHX_ const U8 *p) - __attribute__warn_unused_result__; -#define PERL_ARGS_ASSERT__IS_UTF8_IDSTART \ - assert(p) - -PERL_CALLCONV bool Perl__is_utf8_mark(pTHX_ const U8 *p) - __attribute__warn_unused_result__; -#define PERL_ARGS_ASSERT__IS_UTF8_MARK \ - assert(p) - -PERL_CALLCONV bool Perl__is_utf8_perl_idcont_with_len(pTHX_ const U8 *p, const U8 * const e) - __attribute__warn_unused_result__; -#define PERL_ARGS_ASSERT__IS_UTF8_PERL_IDCONT_WITH_LEN \ +#define PERL_ARGS_ASSERT__IS_UTF8_PERL_IDCONT \ assert(p); assert(e) -PERL_CALLCONV bool Perl__is_utf8_perl_idstart_with_len(pTHX_ const U8 *p, const U8 * const e) +PERL_CALLCONV bool Perl__is_utf8_perl_idstart(pTHX_ const U8 *p, const U8 * const e) __attribute__warn_unused_result__; -#define PERL_ARGS_ASSERT__IS_UTF8_PERL_IDSTART_WITH_LEN \ +#define PERL_ARGS_ASSERT__IS_UTF8_PERL_IDSTART \ assert(p); assert(e) -PERL_CALLCONV bool Perl__is_utf8_xidcont(pTHX_ const U8 *p) - __attribute__warn_unused_result__; -#define PERL_ARGS_ASSERT__IS_UTF8_XIDCONT \ - assert(p) - -PERL_CALLCONV bool Perl__is_utf8_xidstart(pTHX_ const U8 *p) - __attribute__warn_unused_result__; -#define PERL_ARGS_ASSERT__IS_UTF8_XIDSTART \ - assert(p) - PERL_CALLCONV UV Perl__to_uni_fold_flags(pTHX_ UV c, U8 *p, STRLEN *lenp, U8 flags); #define PERL_ARGS_ASSERT__TO_UNI_FOLD_FLAGS \ assert(p); assert(lenp) @@ -505,6 +480,11 @@ PERL_CALLCONV OP * Perl_ck_index(pTHX_ OP *o) #define PERL_ARGS_ASSERT_CK_INDEX \ assert(o) +PERL_CALLCONV OP * Perl_ck_isa(pTHX_ OP *o) + __attribute__warn_unused_result__; +#define PERL_ARGS_ASSERT_CK_ISA \ + assert(o) + PERL_CALLCONV OP * Perl_ck_join(pTHX_ OP *o) __attribute__warn_unused_result__; #define PERL_ARGS_ASSERT_CK_JOIN \ @@ -676,6 +656,10 @@ PERL_CALLCONV void Perl_clear_defarray(pTHX_ AV* av, bool abandon); PERL_CALLCONV const COP* Perl_closest_cop(pTHX_ const COP *cop, const OP *o, const OP *curop, bool opnext); #define PERL_ARGS_ASSERT_CLOSEST_COP \ assert(cop) +PERL_CALLCONV const char * Perl_cntrl_to_mnemonic(const U8 c) + __attribute__warn_unused_result__; +#define PERL_ARGS_ASSERT_CNTRL_TO_MNEMONIC + PERL_CALLCONV const char * Perl_cop_fetch_label(pTHX_ COP *const cop, STRLEN *len, U32 *flags); #define PERL_ARGS_ASSERT_COP_FETCH_LABEL \ assert(cop) @@ -726,6 +710,10 @@ PERL_CALLCONV_NO_RET void Perl_croak_xs_usage(const CV *const cv, const char *co #define PERL_ARGS_ASSERT_CROAK_XS_USAGE \ assert(cv); assert(params) +PERL_CALLCONV Signal_t Perl_csighandler1(int sig); +#define PERL_ARGS_ASSERT_CSIGHANDLER1 +PERL_CALLCONV Signal_t Perl_csighandler3(int sig, Siginfo_t *info, void *uap); +#define PERL_ARGS_ASSERT_CSIGHANDLER3 PERL_CALLCONV regexp_engine const * Perl_current_re_engine(pTHX); #define PERL_ARGS_ASSERT_CURRENT_RE_ENGINE #ifndef NO_MATHOMS @@ -1029,9 +1017,6 @@ PERL_CALLCONV char* Perl_fbm_instr(pTHX_ unsigned char* big, unsigned char* bige #define PERL_ARGS_ASSERT_FBM_INSTR \ assert(big); assert(bigend); assert(littlestr) -PERL_CALLCONV bool Perl_feature_is_enabled(pTHX_ const char *const name, STRLEN namelen); -#define PERL_ARGS_ASSERT_FEATURE_IS_ENABLED \ - assert(name) PERL_CALLCONV SV* Perl_filter_add(pTHX_ filter_t funcp, SV* datasv); #define PERL_ARGS_ASSERT_FILTER_ADD PERL_CALLCONV void Perl_filter_del(pTHX_ filter_t funcp); @@ -1167,6 +1152,9 @@ PERL_CALLCONV bool Perl_grok_atoUV(const char* pv, UV* valptr, const char** endp PERL_CALLCONV UV Perl_grok_bin(pTHX_ const char* start, STRLEN* len_p, I32* flags, NV *result); #define PERL_ARGS_ASSERT_GROK_BIN \ assert(start); assert(len_p); assert(flags) +PERL_CALLCONV UV Perl_grok_bin_oct_hex(pTHX_ const char* start, STRLEN* len_p, I32* flags, NV *result, const unsigned shift, const U8 lookup_bit, const char prefix); +#define PERL_ARGS_ASSERT_GROK_BIN_OCT_HEX \ + assert(start); assert(len_p); assert(flags) PERL_CALLCONV UV Perl_grok_hex(pTHX_ const char* start, STRLEN* len_p, I32* flags, NV *result); #define PERL_ARGS_ASSERT_GROK_HEX \ assert(start); assert(len_p); assert(flags) @@ -1576,6 +1564,9 @@ PERL_CALLCONV OP* Perl_invert(pTHX_ OP* cmd) __attribute__warn_unused_result__; #define PERL_ARGS_ASSERT_INVERT +PERL_CALLCONV void Perl_invmap_dump(pTHX_ SV* invlist, UV * map); +#define PERL_ARGS_ASSERT_INVMAP_DUMP \ + assert(invlist); assert(map) PERL_CALLCONV bool Perl_io_close(pTHX_ IO* io, GV *gv, bool not_implicit, bool warn_on_fail); #define PERL_ARGS_ASSERT_IO_CLOSE \ assert(io) @@ -1644,226 +1635,6 @@ PERL_STATIC_INLINE bool Perl_is_strict_utf8_string_loclen(const U8 *s, STRLEN le assert(s) #endif #ifndef NO_MATHOMS -PERL_CALLCONV bool Perl_is_uni_alnum(pTHX_ UV c) - __attribute__deprecated__ - __attribute__warn_unused_result__; -#define PERL_ARGS_ASSERT_IS_UNI_ALNUM -#endif - -#ifndef NO_MATHOMS -PERL_CALLCONV bool Perl_is_uni_alnum_lc(pTHX_ UV c) - __attribute__deprecated__ - __attribute__warn_unused_result__; -#define PERL_ARGS_ASSERT_IS_UNI_ALNUM_LC -#endif - -#ifndef NO_MATHOMS -PERL_CALLCONV bool Perl_is_uni_alnumc(pTHX_ UV c) - __attribute__deprecated__ - __attribute__warn_unused_result__; -#define PERL_ARGS_ASSERT_IS_UNI_ALNUMC -#endif - -#ifndef NO_MATHOMS -PERL_CALLCONV bool Perl_is_uni_alnumc_lc(pTHX_ UV c) - __attribute__deprecated__ - __attribute__warn_unused_result__; -#define PERL_ARGS_ASSERT_IS_UNI_ALNUMC_LC -#endif - -#ifndef NO_MATHOMS -PERL_CALLCONV bool Perl_is_uni_alpha(pTHX_ UV c) - __attribute__deprecated__ - __attribute__warn_unused_result__; -#define PERL_ARGS_ASSERT_IS_UNI_ALPHA -#endif - -#ifndef NO_MATHOMS -PERL_CALLCONV bool Perl_is_uni_alpha_lc(pTHX_ UV c) - __attribute__deprecated__ - __attribute__warn_unused_result__; -#define PERL_ARGS_ASSERT_IS_UNI_ALPHA_LC -#endif - -#ifndef NO_MATHOMS -PERL_CALLCONV bool Perl_is_uni_ascii(pTHX_ UV c) - __attribute__deprecated__ - __attribute__warn_unused_result__ - __attribute__pure__; -#define PERL_ARGS_ASSERT_IS_UNI_ASCII -#endif - -#ifndef NO_MATHOMS -PERL_CALLCONV bool Perl_is_uni_ascii_lc(pTHX_ UV c) - __attribute__deprecated__ - __attribute__warn_unused_result__ - __attribute__pure__; -#define PERL_ARGS_ASSERT_IS_UNI_ASCII_LC -#endif - -#ifndef NO_MATHOMS -PERL_CALLCONV bool Perl_is_uni_blank(pTHX_ UV c) - __attribute__deprecated__ - __attribute__warn_unused_result__ - __attribute__pure__; -#define PERL_ARGS_ASSERT_IS_UNI_BLANK -#endif - -#ifndef NO_MATHOMS -PERL_CALLCONV bool Perl_is_uni_blank_lc(pTHX_ UV c) - __attribute__deprecated__ - __attribute__warn_unused_result__ - __attribute__pure__; -#define PERL_ARGS_ASSERT_IS_UNI_BLANK_LC -#endif - -#ifndef NO_MATHOMS -PERL_CALLCONV bool Perl_is_uni_cntrl(pTHX_ UV c) - __attribute__deprecated__ - __attribute__warn_unused_result__ - __attribute__pure__; -#define PERL_ARGS_ASSERT_IS_UNI_CNTRL -#endif - -#ifndef NO_MATHOMS -PERL_CALLCONV bool Perl_is_uni_cntrl_lc(pTHX_ UV c) - __attribute__deprecated__ - __attribute__warn_unused_result__ - __attribute__pure__; -#define PERL_ARGS_ASSERT_IS_UNI_CNTRL_LC -#endif - -#ifndef NO_MATHOMS -PERL_CALLCONV bool Perl_is_uni_digit(pTHX_ UV c) - __attribute__deprecated__ - __attribute__warn_unused_result__; -#define PERL_ARGS_ASSERT_IS_UNI_DIGIT -#endif - -#ifndef NO_MATHOMS -PERL_CALLCONV bool Perl_is_uni_digit_lc(pTHX_ UV c) - __attribute__deprecated__ - __attribute__warn_unused_result__; -#define PERL_ARGS_ASSERT_IS_UNI_DIGIT_LC -#endif - -#ifndef NO_MATHOMS -PERL_CALLCONV bool Perl_is_uni_graph(pTHX_ UV c) - __attribute__deprecated__ - __attribute__warn_unused_result__; -#define PERL_ARGS_ASSERT_IS_UNI_GRAPH -#endif - -#ifndef NO_MATHOMS -PERL_CALLCONV bool Perl_is_uni_graph_lc(pTHX_ UV c) - __attribute__deprecated__ - __attribute__warn_unused_result__; -#define PERL_ARGS_ASSERT_IS_UNI_GRAPH_LC -#endif - -#ifndef NO_MATHOMS -PERL_CALLCONV bool Perl_is_uni_idfirst(pTHX_ UV c) - __attribute__deprecated__ - __attribute__warn_unused_result__; -#define PERL_ARGS_ASSERT_IS_UNI_IDFIRST -#endif - -#ifndef NO_MATHOMS -PERL_CALLCONV bool Perl_is_uni_idfirst_lc(pTHX_ UV c) - __attribute__deprecated__ - __attribute__warn_unused_result__; -#define PERL_ARGS_ASSERT_IS_UNI_IDFIRST_LC -#endif - -#ifndef NO_MATHOMS -PERL_CALLCONV bool Perl_is_uni_lower(pTHX_ UV c) - __attribute__deprecated__ - __attribute__warn_unused_result__; -#define PERL_ARGS_ASSERT_IS_UNI_LOWER -#endif - -#ifndef NO_MATHOMS -PERL_CALLCONV bool Perl_is_uni_lower_lc(pTHX_ UV c) - __attribute__deprecated__ - __attribute__warn_unused_result__; -#define PERL_ARGS_ASSERT_IS_UNI_LOWER_LC -#endif - -#ifndef NO_MATHOMS -PERL_CALLCONV bool Perl_is_uni_print(pTHX_ UV c) - __attribute__deprecated__ - __attribute__warn_unused_result__; -#define PERL_ARGS_ASSERT_IS_UNI_PRINT -#endif - -#ifndef NO_MATHOMS -PERL_CALLCONV bool Perl_is_uni_print_lc(pTHX_ UV c) - __attribute__deprecated__ - __attribute__warn_unused_result__; -#define PERL_ARGS_ASSERT_IS_UNI_PRINT_LC -#endif - -#ifndef NO_MATHOMS -PERL_CALLCONV bool Perl_is_uni_punct(pTHX_ UV c) - __attribute__deprecated__ - __attribute__warn_unused_result__; -#define PERL_ARGS_ASSERT_IS_UNI_PUNCT -#endif - -#ifndef NO_MATHOMS -PERL_CALLCONV bool Perl_is_uni_punct_lc(pTHX_ UV c) - __attribute__deprecated__ - __attribute__warn_unused_result__; -#define PERL_ARGS_ASSERT_IS_UNI_PUNCT_LC -#endif - -#ifndef NO_MATHOMS -PERL_CALLCONV bool Perl_is_uni_space(pTHX_ UV c) - __attribute__deprecated__ - __attribute__warn_unused_result__ - __attribute__pure__; -#define PERL_ARGS_ASSERT_IS_UNI_SPACE -#endif - -#ifndef NO_MATHOMS -PERL_CALLCONV bool Perl_is_uni_space_lc(pTHX_ UV c) - __attribute__deprecated__ - __attribute__warn_unused_result__ - __attribute__pure__; -#define PERL_ARGS_ASSERT_IS_UNI_SPACE_LC -#endif - -#ifndef NO_MATHOMS -PERL_CALLCONV bool Perl_is_uni_upper(pTHX_ UV c) - __attribute__deprecated__ - __attribute__warn_unused_result__; -#define PERL_ARGS_ASSERT_IS_UNI_UPPER -#endif - -#ifndef NO_MATHOMS -PERL_CALLCONV bool Perl_is_uni_upper_lc(pTHX_ UV c) - __attribute__deprecated__ - __attribute__warn_unused_result__; -#define PERL_ARGS_ASSERT_IS_UNI_UPPER_LC -#endif - -#ifndef NO_MATHOMS -PERL_CALLCONV bool Perl_is_uni_xdigit(pTHX_ UV c) - __attribute__deprecated__ - __attribute__warn_unused_result__ - __attribute__pure__; -#define PERL_ARGS_ASSERT_IS_UNI_XDIGIT -#endif - -#ifndef NO_MATHOMS -PERL_CALLCONV bool Perl_is_uni_xdigit_lc(pTHX_ UV c) - __attribute__deprecated__ - __attribute__warn_unused_result__ - __attribute__pure__; -#define PERL_ARGS_ASSERT_IS_UNI_XDIGIT_LC -#endif - -#ifndef NO_MATHOMS PERL_CALLCONV STRLEN Perl_is_utf8_char(const U8 *s) __attribute__deprecated__; #define PERL_ARGS_ASSERT_IS_UTF8_CHAR \ @@ -1901,14 +1672,6 @@ PERL_STATIC_INLINE bool Perl_is_utf8_invariant_string_loc(const U8* const s, STR assert(s) #endif -#ifndef NO_MATHOMS -PERL_CALLCONV bool Perl_is_utf8_mark(pTHX_ const U8 *p) - __attribute__deprecated__ - __attribute__warn_unused_result__; -#define PERL_ARGS_ASSERT_IS_UTF8_MARK \ - assert(p) -#endif - /* PERL_CALLCONV bool is_utf8_string(const U8 *s, STRLEN len) __attribute__warn_unused_result__; */ #define PERL_ARGS_ASSERT_IS_UTF8_STRING @@ -2008,6 +1771,11 @@ PERL_CALLCONV void Perl_lex_unstuff(pTHX_ char* ptr); assert(ptr) PERL_CALLCONV OP* Perl_list(pTHX_ OP* o); #define PERL_ARGS_ASSERT_LIST +PERL_CALLCONV HV* Perl_load_charnames(pTHX_ SV * char_name, const char * context, const STRLEN context_len, const char ** error_msg) + __attribute__warn_unused_result__; +#define PERL_ARGS_ASSERT_LOAD_CHARNAMES \ + assert(char_name); assert(context); assert(error_msg) + PERL_CALLCONV void Perl_load_module(pTHX_ U32 flags, SV* name, SV* ver, ...); #define PERL_ARGS_ASSERT_LOAD_MODULE \ assert(name) @@ -2900,6 +2668,8 @@ PERL_CALLCONV int perl_parse(PerlInterpreter *my_perl, XSINIT_t xsinit, int argc PERL_CALLCONV int perl_run(PerlInterpreter *my_perl); #define PERL_ARGS_ASSERT_PERL_RUN \ assert(my_perl) +PERL_CALLCONV Signal_t Perl_perly_sighandler(int sig, Siginfo_t *info, void *uap, bool safe); +#define PERL_ARGS_ASSERT_PERLY_SIGHANDLER PERL_CALLCONV void Perl_pmop_dump(pTHX_ PMOP* pm); #define PERL_ARGS_ASSERT_PMOP_DUMP PERL_CALLCONV OP* Perl_pmruntime(pTHX_ OP *o, OP *expr, OP *repl, UV flags, I32 floor); @@ -3274,7 +3044,7 @@ PERL_CALLCONV char* Perl_savepv(pTHX_ const char* pv) __attribute__warn_unused_result__; #define PERL_ARGS_ASSERT_SAVEPV -PERL_CALLCONV char* Perl_savepvn(pTHX_ const char* pv, I32 len) +PERL_CALLCONV char* Perl_savepvn(pTHX_ const char* pv, Size_t len) __attribute__malloc__ __attribute__warn_unused_result__; #define PERL_ARGS_ASSERT_SAVEPVN @@ -3367,6 +3137,10 @@ PERL_CALLCONV void Perl_setfd_inhexec_for_sysfd(pTHX_ int fd); PERL_CALLCONV HEK* Perl_share_hek(pTHX_ const char* str, SSize_t len, U32 hash); #define PERL_ARGS_ASSERT_SHARE_HEK \ assert(str) +PERL_CALLCONV Signal_t Perl_sighandler1(int sig); +#define PERL_ARGS_ASSERT_SIGHANDLER1 +PERL_CALLCONV Signal_t Perl_sighandler3(int sig, Siginfo_t *info, void *uap); +#define PERL_ARGS_ASSERT_SIGHANDLER3 PERL_CALLCONV char* Perl_skipspace_flags(pTHX_ char *s, U32 flags) __attribute__warn_unused_result__; #define PERL_ARGS_ASSERT_SKIPSPACE_FLAGS \ @@ -3655,6 +3429,11 @@ PERL_CALLCONV void Perl_sv_insert_flags(pTHX_ SV *const bigstr, const STRLEN off PERL_CALLCONV int Perl_sv_isa(pTHX_ SV* sv, const char *const name); #define PERL_ARGS_ASSERT_SV_ISA \ assert(name) +PERL_CALLCONV bool Perl_sv_isa_sv(pTHX_ SV* sv, SV* namesv) + __attribute__warn_unused_result__; +#define PERL_ARGS_ASSERT_SV_ISA_SV \ + assert(sv); assert(namesv) + PERL_CALLCONV int Perl_sv_isobject(pTHX_ SV* sv); #define PERL_ARGS_ASSERT_SV_ISOBJECT #ifndef NO_MATHOMS @@ -4023,14 +3802,6 @@ PERL_CALLCONV void Perl_sv_vsetpvf_mg(pTHX_ SV *const sv, const char *const pat, PERL_CALLCONV void Perl_sv_vsetpvfn(pTHX_ SV *const sv, const char *const pat, const STRLEN patlen, va_list *const args, SV **const svargs, const Size_t sv_count, bool *const maybe_tainted); #define PERL_ARGS_ASSERT_SV_VSETPVFN \ assert(sv); assert(pat) -PERL_CALLCONV UV Perl_swash_fetch(pTHX_ SV *swash, const U8 *ptr, bool do_utf8); -#define PERL_ARGS_ASSERT_SWASH_FETCH \ - assert(swash); assert(ptr) -PERL_CALLCONV SV* Perl_swash_init(pTHX_ const char* pkg, const char* name, SV* listsv, I32 minbits, I32 none) - __attribute__warn_unused_result__; -#define PERL_ARGS_ASSERT_SWASH_INIT \ - assert(pkg); assert(name); assert(listsv) - PERL_CALLCONV void Perl_switch_to_global_locale(void); #define PERL_ARGS_ASSERT_SWITCH_TO_GLOBAL_LOCALE PERL_CALLCONV bool Perl_sync_locale(void); @@ -4062,33 +3833,12 @@ PERL_CALLCONV SSize_t Perl_tmps_grow_p(pTHX_ SSize_t ix); PERL_CALLCONV UV Perl_to_uni_lower(pTHX_ UV c, U8 *p, STRLEN *lenp); #define PERL_ARGS_ASSERT_TO_UNI_LOWER \ assert(p); assert(lenp) -#ifndef NO_MATHOMS -PERL_CALLCONV U32 Perl_to_uni_lower_lc(pTHX_ U32 c) - __attribute__deprecated__ - __attribute__warn_unused_result__; -#define PERL_ARGS_ASSERT_TO_UNI_LOWER_LC -#endif - PERL_CALLCONV UV Perl_to_uni_title(pTHX_ UV c, U8 *p, STRLEN *lenp); #define PERL_ARGS_ASSERT_TO_UNI_TITLE \ assert(p); assert(lenp) -#ifndef NO_MATHOMS -PERL_CALLCONV U32 Perl_to_uni_title_lc(pTHX_ U32 c) - __attribute__deprecated__ - __attribute__warn_unused_result__; -#define PERL_ARGS_ASSERT_TO_UNI_TITLE_LC -#endif - PERL_CALLCONV UV Perl_to_uni_upper(pTHX_ UV c, U8 *p, STRLEN *lenp); #define PERL_ARGS_ASSERT_TO_UNI_UPPER \ assert(p); assert(lenp) -#ifndef NO_MATHOMS -PERL_CALLCONV U32 Perl_to_uni_upper_lc(pTHX_ U32 c) - __attribute__deprecated__ - __attribute__warn_unused_result__; -#define PERL_ARGS_ASSERT_TO_UNI_UPPER_LC -#endif - PERL_CALLCONV bool Perl_try_amagic_bin(pTHX_ int method, int flags); #define PERL_ARGS_ASSERT_TRY_AMAGIC_BIN PERL_CALLCONV bool Perl_try_amagic_un(pTHX_ int method, int flags); @@ -4110,10 +3860,10 @@ PERL_CALLCONV void Perl_unsharepvn(pTHX_ const char* sv, I32 len, U32 hash); PERL_CALLCONV SV* Perl_upg_version(pTHX_ SV *ver, bool qv); #define PERL_ARGS_ASSERT_UPG_VERSION \ assert(ver) -PERL_CALLCONV U8* Perl_utf16_to_utf8(pTHX_ U8* p, U8 *d, I32 bytelen, I32 *newlen); +PERL_CALLCONV U8* Perl_utf16_to_utf8(pTHX_ U8* p, U8 *d, Size_t bytelen, Size_t *newlen); #define PERL_ARGS_ASSERT_UTF16_TO_UTF8 \ assert(p); assert(d); assert(newlen) -PERL_CALLCONV U8* Perl_utf16_to_utf8_reversed(pTHX_ U8* p, U8 *d, I32 bytelen, I32 *newlen); +PERL_CALLCONV U8* Perl_utf16_to_utf8_reversed(pTHX_ U8* p, U8 *d, Size_t bytelen, Size_t *newlen); #define PERL_ARGS_ASSERT_UTF16_TO_UTF8_REVERSED \ assert(p); assert(d); assert(newlen) #ifndef PERL_NO_INLINE_FUNCTIONS @@ -4376,12 +4126,6 @@ STATIC const char* S_my_nl_langinfo(const int item, bool toggle); #define PERL_ARGS_ASSERT_MY_NL_LANGINFO # endif #endif -#if !(defined(HAS_SIGACTION) && defined(SA_SIGINFO)) -PERL_CALLCONV Signal_t Perl_csighandler(int sig); -#define PERL_ARGS_ASSERT_CSIGHANDLER -PERL_CALLCONV Signal_t Perl_sighandler(int sig); -#define PERL_ARGS_ASSERT_SIGHANDLER -#endif #if !(defined(PERL_DEFAULT_DO_EXEC3_IMPLEMENTATION)) PERL_CALLCONV bool Perl_do_exec(pTHX_ const char* cmd); #define PERL_ARGS_ASSERT_DO_EXEC \ @@ -4394,6 +4138,12 @@ PERL_CALLCONV void* Perl_my_cxt_init(pTHX_ int *indexp, size_t size); assert(indexp) # endif #endif +#if !(defined(PERL_USE_3ARG_SIGHANDLER)) +PERL_CALLCONV Signal_t Perl_csighandler(int sig); +#define PERL_ARGS_ASSERT_CSIGHANDLER +PERL_CALLCONV Signal_t Perl_sighandler(int sig); +#define PERL_ARGS_ASSERT_SIGHANDLER +#endif #if !(defined(_MSC_VER)) PERL_CALLCONV_NO_RET int Perl_magic_regdatum_set(pTHX_ SV* sv, MAGIC* mg) __attribute__noreturn__; @@ -4454,10 +4204,12 @@ PERL_CALLCONV Size_t Perl_my_strlcpy(char *dst, const char *src, Size_t size); #define PERL_ARGS_ASSERT_MY_STRLCPY #endif #if !defined(HAS_STRNLEN) -PERL_CALLCONV Size_t Perl_my_strnlen(const char *str, Size_t maxlen); +#ifndef PERL_NO_INLINE_FUNCTIONS +PERL_STATIC_INLINE Size_t Perl_my_strnlen(const char *str, Size_t maxlen); #define PERL_ARGS_ASSERT_MY_STRNLEN \ assert(str) #endif +#endif #if !defined(HAS_TRUNCATE) && !defined(HAS_CHSIZE) && defined(F_FREESP) PERL_CALLCONV I32 Perl_my_chsize(pTHX_ int fd, Off_t length) __attribute__warn_unused_result__; @@ -4509,9 +4261,6 @@ PERL_STATIC_INLINE void S_invlist_clear(pTHX_ SV* invlist); #define PERL_ARGS_ASSERT_INVLIST_CLEAR \ assert(invlist) #endif -STATIC void S_invlist_extend(pTHX_ SV* const invlist, const UV len); -#define PERL_ARGS_ASSERT_INVLIST_EXTEND \ - assert(invlist) #ifndef PERL_NO_INLINE_FUNCTIONS PERL_STATIC_INLINE UV S_invlist_max(SV* const invlist) __attribute__warn_unused_result__; @@ -4530,11 +4279,6 @@ STATIC void S_invlist_replace_list_destroys_src(pTHX_ SV *dest, SV *src); #define PERL_ARGS_ASSERT_INVLIST_REPLACE_LIST_DESTROYS_SRC \ assert(dest); assert(src) #ifndef PERL_NO_INLINE_FUNCTIONS -PERL_STATIC_INLINE void S_invlist_set_len(pTHX_ SV* const invlist, const UV len, const bool offset); -#define PERL_ARGS_ASSERT_INVLIST_SET_LEN \ - assert(invlist) -#endif -#ifndef PERL_NO_INLINE_FUNCTIONS PERL_STATIC_INLINE void S_invlist_set_previous_index(SV* const invlist, const IV index); #define PERL_ARGS_ASSERT_INVLIST_SET_PREVIOUS_INDEX \ assert(invlist) @@ -4750,7 +4494,7 @@ STATIC void S_dump_trie_interim_table(pTHX_ const struct _reg_trie_data *trie, H 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); #define PERL_ARGS_ASSERT_DUMPUNTIL \ assert(r); assert(start); assert(node); assert(sv) -STATIC bool S_put_charclass_bitmap_innards(pTHX_ SV* sv, char* bitmap, SV* nonbitmap_invlist, SV* only_utf8_locale_invlist, const regnode * const node, const bool force_as_is_display); +STATIC bool S_put_charclass_bitmap_innards(pTHX_ SV* sv, char* bitmap, SV* nonbitmap_invlist, SV* only_utf8_locale_invlist, const regnode * const node, const U8 flags, const bool force_as_is_display); #define PERL_ARGS_ASSERT_PUT_CHARCLASS_BITMAP_INNARDS \ assert(sv) STATIC SV* S_put_charclass_bitmap_innards_common(pTHX_ SV* invlist, SV* posixes, SV* only_utf8, SV* not_utf8, SV* only_utf8_locale, const bool invert); @@ -4854,12 +4598,6 @@ PERL_CALLCONV int Perl_PerlProc_pipe_cloexec(pTHX_ int *pipefd) assert(pipefd) #endif -#if defined(HAS_SIGACTION) && defined(SA_SIGINFO) -PERL_CALLCONV Signal_t Perl_csighandler(int sig, siginfo_t *info, void *uap); -#define PERL_ARGS_ASSERT_CSIGHANDLER -PERL_CALLCONV Signal_t Perl_sighandler(int sig, siginfo_t *info, void *uap); -#define PERL_ARGS_ASSERT_SIGHANDLER -#endif #if defined(HAS_SOCKET) PERL_CALLCONV int Perl_PerlSock_accept_cloexec(pTHX_ int listenfd, struct sockaddr *addr, Sock_size_t *addrlen) __attribute__warn_unused_result__; @@ -5136,35 +4874,30 @@ STATIC IO * S_openn_setup(pTHX_ GV *gv, char *mode, PerlIO **saveifp, PerlIO **s assert(gv); assert(mode); assert(saveifp); assert(saveofp); assert(savefd); assert(savetype) #endif #if defined(PERL_IN_DOOP_C) -STATIC Size_t S_do_trans_complex(pTHX_ SV * const sv) +STATIC Size_t S_do_trans_complex(pTHX_ SV * const sv, const OPtrans_map * const tbl) __attribute__warn_unused_result__; #define PERL_ARGS_ASSERT_DO_TRANS_COMPLEX \ - assert(sv) - -STATIC Size_t S_do_trans_complex_utf8(pTHX_ SV * const sv) - __attribute__warn_unused_result__; -#define PERL_ARGS_ASSERT_DO_TRANS_COMPLEX_UTF8 \ - assert(sv) + assert(sv); assert(tbl) -STATIC Size_t S_do_trans_count(pTHX_ SV * const sv) +STATIC Size_t S_do_trans_count(pTHX_ SV * const sv, const OPtrans_map * const tbl) __attribute__warn_unused_result__; #define PERL_ARGS_ASSERT_DO_TRANS_COUNT \ - assert(sv) + assert(sv); assert(tbl) -STATIC Size_t S_do_trans_count_utf8(pTHX_ SV * const sv) +STATIC Size_t S_do_trans_count_invmap(pTHX_ SV * const sv, AV * const map) __attribute__warn_unused_result__; -#define PERL_ARGS_ASSERT_DO_TRANS_COUNT_UTF8 \ - assert(sv) +#define PERL_ARGS_ASSERT_DO_TRANS_COUNT_INVMAP \ + assert(sv); assert(map) -STATIC Size_t S_do_trans_simple(pTHX_ SV * const sv) +STATIC Size_t S_do_trans_invmap(pTHX_ SV * const sv, AV * const map) __attribute__warn_unused_result__; -#define PERL_ARGS_ASSERT_DO_TRANS_SIMPLE \ - assert(sv) +#define PERL_ARGS_ASSERT_DO_TRANS_INVMAP \ + assert(sv); assert(map) -STATIC Size_t S_do_trans_simple_utf8(pTHX_ SV * const sv) +STATIC Size_t S_do_trans_simple(pTHX_ SV * const sv, const OPtrans_map * const tbl) __attribute__warn_unused_result__; -#define PERL_ARGS_ASSERT_DO_TRANS_SIMPLE_UTF8 \ - assert(sv) +#define PERL_ARGS_ASSERT_DO_TRANS_SIMPLE \ + assert(sv); assert(tbl) #endif #if defined(PERL_IN_DUMP_C) @@ -5209,9 +4942,6 @@ PERL_STATIC_INLINE HV* S_gv_stashpvn_internal(pTHX_ const char* name, U32 namele #define PERL_ARGS_ASSERT_GV_STASHPVN_INTERNAL \ assert(name) #endif -#ifndef PERL_NO_INLINE_FUNCTIONS -PERL_STATIC_INLINE HV* S_gv_stashsvpvn_cached(pTHX_ SV *namesv, const char* name, U32 namelen, I32 flags); -#endif STATIC void S_maybe_multimagic_gv(pTHX_ GV *gv, const char *name, const svtype sv_type); #define PERL_ARGS_ASSERT_MAYBE_MULTIMAGIC_GV \ assert(gv); assert(name) @@ -5227,6 +4957,9 @@ PERL_CALLCONV void Perl_sv_add_backref(pTHX_ SV *const tsv, SV *const sv); #define PERL_ARGS_ASSERT_SV_ADD_BACKREF \ assert(tsv); assert(sv) #endif +#if defined(PERL_IN_GV_C) || defined(PERL_IN_UNIVERSAL_C) +PERL_CALLCONV HV* Perl_gv_stashsvpvn_cached(pTHX_ SV *namesv, const char* name, U32 namelen, I32 flags); +#endif #if defined(PERL_IN_HV_C) STATIC void S_clear_placeholders(pTHX_ HV *hv, U32 items); #define PERL_ARGS_ASSERT_CLEAR_PLACEHOLDERS \ @@ -5374,6 +5107,10 @@ STATIC AV* S_mro_get_linear_isa_dfs(pTHX_ HV* stash, U32 level); #define PERL_ARGS_ASSERT_MRO_GET_LINEAR_ISA_DFS \ assert(stash) #endif +#if defined(PERL_IN_NUMERIC_C) +STATIC void S_output_non_portable(pTHX_ const U8 shift); +#define PERL_ARGS_ASSERT_OUTPUT_NON_PORTABLE +#endif #if defined(PERL_IN_OP_C) STATIC void S_apply_attrs(pTHX_ HV *stash, SV *target, OP *attrs); #define PERL_ARGS_ASSERT_APPLY_ATTRS \ @@ -5819,20 +5556,9 @@ STATIC SV * S_space_join_names_mortal(pTHX_ char *const *array); #define PERL_ARGS_ASSERT_SPACE_JOIN_NAMES_MORTAL #endif #if defined(PERL_IN_REGCOMP_C) -STATIC SV* S__make_exactf_invlist(pTHX_ RExC_state_t *pRExC_state, regnode *node) - __attribute__warn_unused_result__; -#define PERL_ARGS_ASSERT__MAKE_EXACTF_INVLIST \ - assert(pRExC_state); assert(node) - STATIC void S_add_above_Latin1_folds(pTHX_ RExC_state_t *pRExC_state, const U8 cp, SV** invlist); #define PERL_ARGS_ASSERT_ADD_ABOVE_LATIN1_FOLDS \ assert(pRExC_state); assert(invlist) -#ifndef PERL_NO_INLINE_FUNCTIONS -PERL_STATIC_INLINE SV* S_add_cp_to_invlist(pTHX_ SV* invlist, const UV cp) - __attribute__warn_unused_result__; -#define PERL_ARGS_ASSERT_ADD_CP_TO_INVLIST -#endif - STATIC U32 S_add_data(RExC_state_t* const pRExC_state, const char* const s, const U32 n) __attribute__warn_unused_result__; #define PERL_ARGS_ASSERT_ADD_DATA \ @@ -5844,10 +5570,6 @@ STATIC AV* S_add_multi_match(pTHX_ AV* multi_char_matches, SV* multi_string, con STATIC void S_change_engine_size(pTHX_ RExC_state_t *pRExC_state, const Ptrdiff_t size); #define PERL_ARGS_ASSERT_CHANGE_ENGINE_SIZE \ assert(pRExC_state) -STATIC const char * S_cntrl_to_mnemonic(const U8 c) - __attribute__warn_unused_result__; -#define PERL_ARGS_ASSERT_CNTRL_TO_MNEMONIC - #ifndef PERL_NO_INLINE_FUNCTIONS PERL_STATIC_INLINE U8 S_compute_EXACTish(RExC_state_t *pRExC_state); #define PERL_ARGS_ASSERT_COMPUTE_EXACTISH \ @@ -5861,6 +5583,11 @@ STATIC int S_edit_distance(const UV *src, const UV *tgt, const STRLEN x, const S #define PERL_ARGS_ASSERT_EDIT_DISTANCE \ assert(src); assert(tgt) +#ifndef PERL_NO_INLINE_FUNCTIONS +PERL_STATIC_INLINE Size_t S_find_first_differing_byte_pos(const U8 * s1, const U8 * s2, const Size_t max); +#define PERL_ARGS_ASSERT_FIND_FIRST_DIFFERING_BYTE_POS \ + assert(s1); assert(s2) +#endif STATIC SV * S_get_ANYOFM_contents(pTHX_ const regnode * n) __attribute__warn_unused_result__; #define PERL_ARGS_ASSERT_GET_ANYOFM_CONTENTS \ @@ -5869,13 +5596,6 @@ STATIC SV * S_get_ANYOFM_contents(pTHX_ const regnode * n) STATIC SV* S_get_ANYOF_cp_list_for_ssc(pTHX_ const RExC_state_t *pRExC_state, const regnode_charclass* const node); #define PERL_ARGS_ASSERT_GET_ANYOF_CP_LIST_FOR_SSC \ assert(pRExC_state); assert(node) -#ifndef PERL_NO_INLINE_FUNCTIONS -PERL_STATIC_INLINE STRLEN* S_get_invlist_iter_addr(SV* invlist) - __attribute__warn_unused_result__; -#define PERL_ARGS_ASSERT_GET_INVLIST_ITER_ADDR \ - assert(invlist) -#endif - STATIC bool S_grok_bslash_N(pTHX_ RExC_state_t *pRExC_state, regnode_offset* nodep, UV *code_point_p, int* cp_count, I32 *flagp, const bool strict, const U32 depth); #define PERL_ARGS_ASSERT_GROK_BSLASH_N \ assert(pRExC_state); assert(flagp) @@ -5893,15 +5613,10 @@ STATIC regnode_offset S_handle_regex_sets(pTHX_ RExC_state_t *pRExC_state, SV ** PERL_CALLCONV SV * Perl_handle_user_defined_property(pTHX_ const char * name, const STRLEN name_len, const bool is_utf8, const bool to_fold, const bool runtime, const bool deferrable, SV* contents, bool *user_defined_ptr, SV * msg, const STRLEN level); #define PERL_ARGS_ASSERT_HANDLE_USER_DEFINED_PROPERTY \ assert(name); assert(contents); assert(user_defined_ptr); assert(msg) -STATIC SV* S_invlist_contents(pTHX_ SV* const invlist, const bool traditional_style) - __attribute__warn_unused_result__; -#define PERL_ARGS_ASSERT_INVLIST_CONTENTS \ - assert(invlist) - #ifndef PERL_NO_INLINE_FUNCTIONS -PERL_STATIC_INLINE UV S_invlist_highest(SV* const invlist) +PERL_STATIC_INLINE SV* S_invlist_contents(pTHX_ SV* const invlist, const bool traditional_style) __attribute__warn_unused_result__; -#define PERL_ARGS_ASSERT_INVLIST_HIGHEST \ +#define PERL_ARGS_ASSERT_INVLIST_CONTENTS \ assert(invlist) #endif @@ -5913,19 +5628,11 @@ PERL_STATIC_INLINE bool S_invlist_is_iterating(SV* const invlist) #endif #ifndef PERL_NO_INLINE_FUNCTIONS -PERL_STATIC_INLINE void S_invlist_iterfinish(SV* invlist); -#define PERL_ARGS_ASSERT_INVLIST_ITERFINISH \ - assert(invlist) -#endif -#ifndef PERL_NO_INLINE_FUNCTIONS -PERL_STATIC_INLINE void S_invlist_iterinit(SV* invlist); -#define PERL_ARGS_ASSERT_INVLIST_ITERINIT \ +PERL_STATIC_INLINE UV S_invlist_lowest(SV* const invlist) + __attribute__warn_unused_result__; +#define PERL_ARGS_ASSERT_INVLIST_LOWEST \ assert(invlist) #endif -STATIC bool S_invlist_iternext(SV* invlist, UV* start, UV* end) - __attribute__warn_unused_result__; -#define PERL_ARGS_ASSERT_INVLIST_ITERNEXT \ - assert(invlist); assert(start); assert(end) STATIC bool S_is_ssc_worth_it(const RExC_state_t * pRExC_state, const regnode_ssc * ssc); #define PERL_ARGS_ASSERT_IS_SSC_WORTH_IT \ @@ -5933,6 +5640,11 @@ STATIC bool S_is_ssc_worth_it(const RExC_state_t * pRExC_state, const regnode_ss STATIC U32 S_join_exact(pTHX_ RExC_state_t *pRExC_state, regnode *scan, UV *min_subtract, bool *unfolded_multi_char, U32 flags, regnode *val, U32 depth); #define PERL_ARGS_ASSERT_JOIN_EXACT \ assert(pRExC_state); assert(scan); assert(min_subtract); assert(unfolded_multi_char) +STATIC SV* S_make_exactf_invlist(pTHX_ RExC_state_t *pRExC_state, regnode *node) + __attribute__warn_unused_result__; +#define PERL_ARGS_ASSERT_MAKE_EXACTF_INVLIST \ + assert(pRExC_state); assert(node) + STATIC I32 S_make_trie(pTHX_ RExC_state_t *pRExC_state, regnode *startbranch, regnode *first, regnode *last, regnode *tail, U32 word_count, U32 flags, U32 depth); #define PERL_ARGS_ASSERT_MAKE_TRIE \ assert(pRExC_state); assert(startbranch); assert(first); assert(last); assert(tail) @@ -5950,7 +5662,7 @@ STATIC void S_output_posix_warnings(pTHX_ RExC_state_t *pRExC_state, AV* posix_w STATIC void S_parse_lparen_question_flags(pTHX_ RExC_state_t *pRExC_state); #define PERL_ARGS_ASSERT_PARSE_LPAREN_QUESTION_FLAGS \ assert(pRExC_state) -PERL_CALLCONV SV * Perl_parse_uniprop_string(pTHX_ const char * const name, const Size_t name_len, const bool is_utf8, const bool to_fold, const bool runtime, const bool deferrable, bool * user_defined_ptr, SV * msg, const STRLEN level); +PERL_CALLCONV SV * Perl_parse_uniprop_string(pTHX_ const char * const name, Size_t name_len, const bool is_utf8, const bool to_fold, const bool runtime, const bool deferrable, bool * user_defined_ptr, SV * msg, const STRLEN level); #define PERL_ARGS_ASSERT_PARSE_UNIPROP_STRING \ assert(name); assert(user_defined_ptr); assert(msg) STATIC void S_populate_ANYOF_from_invlist(pTHX_ regnode *node, SV** invlist_ptr); @@ -6074,11 +5786,62 @@ STATIC SSize_t S_study_chunk(pTHX_ RExC_state_t *pRExC_state, regnode **scanp, S #define PERL_ARGS_ASSERT_STUDY_CHUNK \ assert(pRExC_state); assert(scanp); assert(minlenp); assert(deltap); assert(last) #endif -#if defined(PERL_IN_REGCOMP_C) || defined (PERL_IN_DUMP_C) +#if defined(PERL_IN_REGCOMP_C) || defined (PERL_IN_DUMP_C) || defined(PERL_IN_OP_C) PERL_CALLCONV void Perl__invlist_dump(pTHX_ PerlIO *file, I32 level, const char* const indent, SV* const invlist); #define PERL_ARGS_ASSERT__INVLIST_DUMP \ assert(file); assert(indent); assert(invlist) #endif +#if defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_OP_C) +#ifndef PERL_NO_INLINE_FUNCTIONS +PERL_STATIC_INLINE STRLEN* S_get_invlist_iter_addr(SV* invlist) + __attribute__warn_unused_result__; +#define PERL_ARGS_ASSERT_GET_INVLIST_ITER_ADDR \ + assert(invlist) +#endif + +#ifndef PERL_NO_INLINE_FUNCTIONS +PERL_STATIC_INLINE void S_invlist_iterfinish(SV* invlist); +#define PERL_ARGS_ASSERT_INVLIST_ITERFINISH \ + assert(invlist) +#endif +#ifndef PERL_NO_INLINE_FUNCTIONS +PERL_STATIC_INLINE void S_invlist_iterinit(SV* invlist); +#define PERL_ARGS_ASSERT_INVLIST_ITERINIT \ + assert(invlist) +#endif +#ifndef PERL_NO_INLINE_FUNCTIONS +PERL_STATIC_INLINE bool S_invlist_iternext(SV* invlist, UV* start, UV* end) + __attribute__warn_unused_result__; +#define PERL_ARGS_ASSERT_INVLIST_ITERNEXT \ + assert(invlist); assert(start); assert(end) +#endif + +#endif +#if defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_OP_C) || defined(PERL_IN_DOOP_C) +#ifndef PERL_NO_INLINE_FUNCTIONS +PERL_STATIC_INLINE SV* S_add_cp_to_invlist(pTHX_ SV* invlist, const UV cp) + __attribute__warn_unused_result__; +#define PERL_ARGS_ASSERT_ADD_CP_TO_INVLIST +#endif + +#ifndef PERL_NO_INLINE_FUNCTIONS +PERL_STATIC_INLINE void S_invlist_extend(pTHX_ SV* const invlist, const UV len); +#define PERL_ARGS_ASSERT_INVLIST_EXTEND \ + assert(invlist) +#endif +#ifndef PERL_NO_INLINE_FUNCTIONS +PERL_STATIC_INLINE UV S_invlist_highest(SV* const invlist) + __attribute__warn_unused_result__; +#define PERL_ARGS_ASSERT_INVLIST_HIGHEST \ + assert(invlist) +#endif + +#ifndef PERL_NO_INLINE_FUNCTIONS +PERL_STATIC_INLINE void S_invlist_set_len(pTHX_ SV* const invlist, const UV len, const bool offset); +#define PERL_ARGS_ASSERT_INVLIST_SET_LEN \ + assert(invlist) +#endif +#endif #if defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_PERL_C) || defined(PERL_IN_UTF8_C) PERL_CALLCONV bool Perl__invlistEQ(pTHX_ SV* const a, SV* const b, const bool complement_b); #define PERL_ARGS_ASSERT__INVLISTEQ \ @@ -6100,7 +5863,7 @@ PERL_CALLCONV void Perl_regprop(pTHX_ const regexp *prog, SV* sv, const regnode* #define PERL_ARGS_ASSERT_REGPROP \ assert(sv); assert(o) #endif -#if defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_REGEXEC_C) || defined(PERL_IN_TOKE_C) || defined(PERL_IN_UTF8_C) || defined(PERL_IN_PP_C) +#if defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_REGEXEC_C) || defined(PERL_IN_TOKE_C) || defined(PERL_IN_UTF8_C) || defined(PERL_IN_PP_C) || defined(PERL_IN_OP_C) || defined(PERL_IN_DOOP_C) #ifndef PERL_NO_INLINE_FUNCTIONS PERL_STATIC_INLINE bool S__invlist_contains_cp(SV* const invlist, const UV cp) __attribute__warn_unused_result__; @@ -6146,37 +5909,44 @@ PERL_CALLCONV SV* Perl_invlist_clone(pTHX_ SV* const invlist, SV* newlist); #define PERL_ARGS_ASSERT_INVLIST_CLONE \ assert(invlist) #endif -#if defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_TOKE_C) || defined(PERL_IN_DQUOTE_C) +#if defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_TOKE_C) #ifndef PERL_NO_INLINE_FUNCTIONS -PERL_STATIC_INLINE char* S_form_short_octal_warning(pTHX_ const char * const s, const STRLEN len) +PERL_STATIC_INLINE bool S_regcurly(const char *s) __attribute__warn_unused_result__; -#define PERL_ARGS_ASSERT_FORM_SHORT_OCTAL_WARNING \ +#define PERL_ARGS_ASSERT_REGCURLY \ assert(s) #endif -PERL_CALLCONV char Perl_grok_bslash_c(pTHX_ const char source, const bool output_warning) +#endif +#if defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_TOKE_C) || defined(PERL_IN_DQUOTE_C) +PERL_CALLCONV const char * Perl_form_alien_digit_msg(pTHX_ const U8 which, const STRLEN valids_len, const char * const first_bad, const char * const send, const bool UTF, const bool braced) + __attribute__warn_unused_result__; +#define PERL_ARGS_ASSERT_FORM_ALIEN_DIGIT_MSG \ + assert(first_bad); assert(send) + +PERL_CALLCONV bool Perl_grok_bslash_c(pTHX_ const char source, U8 * result, const char** message, U32 * packed_warn) __attribute__warn_unused_result__; -#define PERL_ARGS_ASSERT_GROK_BSLASH_C +#define PERL_ARGS_ASSERT_GROK_BSLASH_C \ + assert(result); assert(message) -PERL_CALLCONV bool Perl_grok_bslash_o(pTHX_ char** s, const char* const send, UV* uv, const char** error_msg, const bool output_warning, const bool strict, const bool silence_non_portable, const bool utf8) +PERL_CALLCONV bool Perl_grok_bslash_o(pTHX_ char** s, const char* const send, UV* uv, const char** message, U32 * packed_warn, const bool strict, const bool allow_UV_MAX, const bool utf8) __attribute__warn_unused_result__; #define PERL_ARGS_ASSERT_GROK_BSLASH_O \ - assert(s); assert(send); assert(uv); assert(error_msg) + assert(s); assert(send); assert(uv); assert(message) -PERL_CALLCONV bool Perl_grok_bslash_x(pTHX_ char** s, const char* const send, UV* uv, const char** error_msg, const bool output_warning, const bool strict, const bool silence_non_portable, const bool utf8) +PERL_CALLCONV bool Perl_grok_bslash_x(pTHX_ char** s, const char* const send, UV* uv, const char** message, U32 * packed_warn, const bool strict, const bool allow_UV_MAX, const bool utf8) __attribute__warn_unused_result__; #define PERL_ARGS_ASSERT_GROK_BSLASH_X \ - assert(s); assert(send); assert(uv); assert(error_msg) + assert(s); assert(send); assert(uv); assert(message) -#ifndef PERL_NO_INLINE_FUNCTIONS -PERL_STATIC_INLINE I32 S_regcurly(const char *s) - __attribute__warn_unused_result__; -#define PERL_ARGS_ASSERT_REGCURLY \ - assert(s) #endif +#if defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_TOKE_C) || defined(PERL_IN_DQUOTE_C) || defined(PERL_IN_UTF8_C) +PERL_CALLCONV const char * Perl_form_cp_too_large_msg(pTHX_ const U8 which, const char * string, const Size_t len, const UV cp) + __attribute__warn_unused_result__; +#define PERL_ARGS_ASSERT_FORM_CP_TOO_LARGE_MSG #endif -#if defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_UTF8_C) +#if defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_UTF8_C) || defined(PERL_IN_OP_C) || defined(PERL_IN_DOOP_C) PERL_CALLCONV SV* Perl__add_range_to_invlist(pTHX_ SV* invlist, UV start, UV end) __attribute__warn_unused_result__; #define PERL_ARGS_ASSERT__ADD_RANGE_TO_INVLIST @@ -6348,10 +6118,10 @@ STATIC void S_to_utf8_substr(pTHX_ regexp * prog); #define PERL_ARGS_ASSERT_TO_UTF8_SUBSTR \ assert(prog) #endif -#if defined(PERL_IN_REGEXEC_C) || defined(PERL_IN_TOKE_C) -PERL_CALLCONV bool Perl__is_grapheme(pTHX_ const U8 * strbeg, const U8 * s, const U8 *strend, const UV cp) +#if defined(PERL_IN_REGEXEC_C) || defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_TOKE_C) +PERL_CALLCONV bool Perl_is_grapheme(pTHX_ const U8 * strbeg, const U8 * s, const U8 *strend, const UV cp) __attribute__warn_unused_result__; -#define PERL_ARGS_ASSERT__IS_GRAPHEME \ +#define PERL_ARGS_ASSERT_IS_GRAPHEME \ assert(strbeg); assert(s); assert(strend) #endif @@ -6612,12 +6382,11 @@ STATIC int S_yywarn(pTHX_ const char *const s, U32 flags); assert(s) #endif #if defined(PERL_IN_UNIVERSAL_C) -STATIC bool S_isa_lookup(pTHX_ HV *stash, const char * const name, STRLEN len, U32 flags); -#define PERL_ARGS_ASSERT_ISA_LOOKUP \ - assert(stash); assert(name) +STATIC bool S_isa_lookup(pTHX_ HV *stash, SV *namesv, const char * name, STRLEN len, U32 flags); +STATIC bool S_sv_derived_from_svpvn(pTHX_ SV *sv, SV *namesv, const char * name, const STRLEN len, U32 flags); #endif #if defined(PERL_IN_UTF8_C) -STATIC UV S__to_utf8_case(pTHX_ const UV uv1, const U8 *p, U8* ustrp, STRLEN *lenp, SV *invlist, const int * const invmap, const unsigned int * const * const aux_tables, const U8 * const aux_table_lengths, const char * const normal); +STATIC UV S__to_utf8_case(pTHX_ const UV uv1, const U8 *p, U8* ustrp, STRLEN *lenp, SV *invlist, const I32 * const invmap, const U32 * const * const aux_tables, const U8 * const aux_table_lengths, const char * const normal); #define PERL_ARGS_ASSERT__TO_UTF8_CASE \ assert(ustrp); assert(lenp); assert(invlist); assert(invmap); assert(normal) STATIC UV S_check_locale_boundary_crossing(pTHX_ const U8* const p, const UV result, U8* const ustrp, STRLEN *lenp) @@ -6640,16 +6409,9 @@ PERL_STATIC_INLINE int S_isFF_OVERLONG(const U8 * const s, const STRLEN len) #endif #ifndef PERL_NO_INLINE_FUNCTIONS -PERL_STATIC_INLINE bool S_is_utf8_common(pTHX_ const U8 *const p, SV* const invlist) +PERL_STATIC_INLINE bool S_is_utf8_common(pTHX_ const U8 *const p, const U8 *const e, SV* const invlist) __attribute__warn_unused_result__; #define PERL_ARGS_ASSERT_IS_UTF8_COMMON \ - assert(p) -#endif - -#ifndef PERL_NO_INLINE_FUNCTIONS -PERL_STATIC_INLINE bool S_is_utf8_common_with_len(pTHX_ const U8 *const p, const U8 *const e, SV* const invlist) - __attribute__warn_unused_result__; -#define PERL_ARGS_ASSERT_IS_UTF8_COMMON_WITH_LEN \ assert(p); assert(e) #endif @@ -6665,16 +6427,6 @@ STATIC HV * S_new_msg_hv(pTHX_ const char * const message, U32 categories, U32 f #define PERL_ARGS_ASSERT_NEW_MSG_HV \ assert(message) -STATIC U8* S_swash_scan_list_line(pTHX_ U8* l, U8* const lend, UV* min, UV* max, UV* val, const bool wants_value, const U8* const typestr) - __attribute__warn_unused_result__; -#define PERL_ARGS_ASSERT_SWASH_SCAN_LIST_LINE \ - assert(l); assert(lend); assert(min); assert(max); assert(val); assert(typestr) - -STATIC SV* S_swatch_get(pTHX_ SV* swash, UV start, UV span) - __attribute__warn_unused_result__; -#define PERL_ARGS_ASSERT_SWATCH_GET \ - assert(swash) - STATIC U8 S_to_lower_latin1(const U8 c, U8 *p, STRLEN *lenp, const char dummy) __attribute__warn_unused_result__; #define PERL_ARGS_ASSERT_TO_LOWER_LATIN1 @@ -6738,6 +6490,12 @@ PERL_CALLCONV Malloc_t Perl_mem_log_realloc(const UV n, const UV typesize, const STATIC void S_pidgone(pTHX_ Pid_t pid, int status); #define PERL_ARGS_ASSERT_PIDGONE #endif +#if defined(PERL_USE_3ARG_SIGHANDLER) +PERL_CALLCONV Signal_t Perl_csighandler(int sig, Siginfo_t *info, void *uap); +#define PERL_ARGS_ASSERT_CSIGHANDLER +PERL_CALLCONV Signal_t Perl_sighandler(int sig, Siginfo_t *info, void *uap); +#define PERL_ARGS_ASSERT_SIGHANDLER +#endif #if defined(UNLINK_ALL_VERSIONS) PERL_CALLCONV I32 Perl_unlnk(pTHX_ const char* f); #define PERL_ARGS_ASSERT_UNLNK \ @@ -6967,8 +6725,8 @@ PERL_CALLCONV SSize_t Perl_PerlIO_write(pTHX_ PerlIO *f, const void *vbuf, Size_ PERL_CALLCONV bool Perl_quadmath_format_needed(const char* format); #define PERL_ARGS_ASSERT_QUADMATH_FORMAT_NEEDED \ assert(format) -PERL_CALLCONV const char* Perl_quadmath_format_single(const char* format); -#define PERL_ARGS_ASSERT_QUADMATH_FORMAT_SINGLE \ +PERL_CALLCONV bool Perl_quadmath_format_valid(const char* format); +#define PERL_ARGS_ASSERT_QUADMATH_FORMAT_VALID \ assert(format) #endif #if defined(WIN32)