X-Git-Url: https://perl5.git.perl.org/perl5.git/blobdiff_plain/96d7c88819733eaaba892177a967d9e898b2b924..cc56b22cdd1467489c6abf7e650bb91d52743913:/proto.h diff --git a/proto.h b/proto.h index 6741563..a8803b0 100644 --- a/proto.h +++ b/proto.h @@ -42,6 +42,9 @@ PERL_CALLCONV void Perl_Slab_Free(pTHX_ void *op) #define PERL_ARGS_ASSERT_SLAB_FREE \ assert(op) +PERL_CALLCONV SV* Perl__get_encoding(pTHX) + __attribute__pure__; + PERL_CALLCONV bool Perl__is_in_locale_category(pTHX_ const bool compiling, const int category); PERL_CALLCONV bool Perl__is_uni_FOO(pTHX_ const U8 classnum, const UV c) __attribute__warn_unused_result__; @@ -137,6 +140,7 @@ PERL_CALLCONV UV Perl__to_utf8_upper_flags(pTHX_ const U8 *p, U8* ustrp, STRLEN #define PERL_ARGS_ASSERT__TO_UTF8_UPPER_FLAGS \ assert(p); assert(ustrp) +PERL_CALLCONV void Perl__warn_problematic_locale(void); PERL_CALLCONV PADOFFSET Perl_allocmy(pTHX_ const char *const name, const STRLEN len, const U32 flags) __attribute__nonnull__(pTHX_1); #define PERL_ARGS_ASSERT_ALLOCMY \ @@ -567,6 +571,12 @@ PERL_CALLCONV OP * Perl_ck_open(pTHX_ OP *o) #define PERL_ARGS_ASSERT_CK_OPEN \ assert(o) +PERL_CALLCONV OP * Perl_ck_prototype(pTHX_ OP *o) + __attribute__warn_unused_result__ + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_CK_PROTOTYPE \ + assert(o) + PERL_CALLCONV OP * Perl_ck_readline(pTHX_ OP *o) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); @@ -904,6 +914,16 @@ PERL_CALLCONV char* Perl_delimcpy(char* to, const char* toend, const char* from, assert(to); assert(toend); assert(from); assert(fromend); assert(retlen) PERL_CALLCONV void Perl_despatch_signals(pTHX); +PERL_CALLCONV_NO_RET OP* Perl_die(pTHX_ const char* pat, ...) + __attribute__noreturn__ + __attribute__format__null_ok__(__printf__,pTHX_1,pTHX_2); + +PERL_CALLCONV_NO_RET OP* Perl_die_sv(pTHX_ SV *baseex) + __attribute__noreturn__ + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_DIE_SV \ + assert(baseex) + PERL_CALLCONV_NO_RET void Perl_die_unwind(pTHX_ SV* msv) __attribute__noreturn__ __attribute__nonnull__(pTHX_1); @@ -1339,9 +1359,9 @@ PERL_CALLCONV UV Perl_grok_hex(pTHX_ const char* start, STRLEN* len_p, I32* flag #define PERL_ARGS_ASSERT_GROK_HEX \ assert(start); assert(len_p); assert(flags) -PERL_CALLCONV int Perl_grok_infnan(const char** sp, const char *send) - __attribute__nonnull__(1) - __attribute__nonnull__(2); +PERL_CALLCONV int Perl_grok_infnan(pTHX_ const char** sp, const char *send) + __attribute__nonnull__(pTHX_1) + __attribute__nonnull__(pTHX_2); #define PERL_ARGS_ASSERT_GROK_INFNAN \ assert(sp); assert(send) @@ -1855,9 +1875,14 @@ PERL_CALLCONV bool Perl_isIDFIRST_lazy(pTHX_ const char* p) #define PERL_ARGS_ASSERT_ISIDFIRST_LAZY \ assert(p) -PERL_CALLCONV bool Perl_is_ascii_string(const U8 *s, STRLEN len) +/* PERL_CALLCONV bool Perl_is_ascii_string(pTHX_ const U8 *s, STRLEN len) + __attribute__warn_unused_result__ + __attribute__nonnull__(pTHX_1); */ + +PERL_CALLCONV bool Perl_is_invariant_string(const U8 *s, STRLEN len) + __attribute__warn_unused_result__ __attribute__nonnull__(1); -#define PERL_ARGS_ASSERT_IS_ASCII_STRING \ +#define PERL_ARGS_ASSERT_IS_INVARIANT_STRING \ assert(s) PERL_CALLCONV I32 Perl_is_lvalue_sub(pTHX) @@ -2748,6 +2773,12 @@ PERL_CALLCONV SV* Perl_mro_set_private_data(pTHX_ struct mro_meta *const smeta, #define PERL_ARGS_ASSERT_MRO_SET_PRIVATE_DATA \ assert(smeta); assert(which); assert(data) +PERL_CALLCONV SV* Perl_multideref_stringify(pTHX_ const OP* o, CV *cv) + __attribute__nonnull__(pTHX_1) + __attribute__nonnull__(pTHX_2); +#define PERL_ARGS_ASSERT_MULTIDEREF_STRINGIFY \ + assert(o); assert(cv) + PERL_CALLCONV NV Perl_my_atof(pTHX_ const char *s) __attribute__nonnull__(pTHX_1); #define PERL_ARGS_ASSERT_MY_ATOF \ @@ -2963,6 +2994,24 @@ PERL_CALLCONV OP* Perl_newOP(pTHX_ I32 optype, I32 flags) __attribute__malloc__ __attribute__warn_unused_result__; +PERL_CALLCONV PADNAMELIST * Perl_newPADNAMELIST(size_t max) + __attribute__malloc__ + __attribute__warn_unused_result__; + +PERL_CALLCONV PADNAME * Perl_newPADNAMEouter(PADNAME *outer) + __attribute__malloc__ + __attribute__warn_unused_result__ + __attribute__nonnull__(1); +#define PERL_ARGS_ASSERT_NEWPADNAMEOUTER \ + assert(outer) + +PERL_CALLCONV PADNAME * Perl_newPADNAMEpvn(const char *s, STRLEN len) + __attribute__malloc__ + __attribute__warn_unused_result__ + __attribute__nonnull__(1); +#define PERL_ARGS_ASSERT_NEWPADNAMEPVN \ + assert(s) + PERL_CALLCONV OP* Perl_newPMOP(pTHX_ I32 type, I32 flags) __attribute__malloc__ __attribute__warn_unused_result__; @@ -2991,12 +3040,12 @@ PERL_CALLCONV SV* Perl_newRV(pTHX_ SV *const sv) #define PERL_ARGS_ASSERT_NEWRV \ assert(sv) -PERL_CALLCONV SV* Perl_newRV_noinc(pTHX_ SV *const sv) +PERL_CALLCONV SV* Perl_newRV_noinc(pTHX_ SV *const tmpRef) __attribute__malloc__ __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); #define PERL_ARGS_ASSERT_NEWRV_NOINC \ - assert(sv) + assert(tmpRef) PERL_CALLCONV OP* Perl_newSLICEOP(pTHX_ I32 flags, OP* subscript, OP* listop) __attribute__malloc__ @@ -3098,6 +3147,10 @@ PERL_CALLCONV OP* Perl_newUNOP(pTHX_ I32 type, I32 flags, OP* first) __attribute__malloc__ __attribute__warn_unused_result__; +PERL_CALLCONV OP* Perl_newUNOP_AUX(pTHX_ I32 type, I32 flags, OP* first, UNOP_AUX_item *aux) + __attribute__malloc__ + __attribute__warn_unused_result__; + PERL_CALLCONV OP* Perl_newWHENOP(pTHX_ OP* cond, OP* block) __attribute__malloc__ __attribute__warn_unused_result__ @@ -3115,6 +3168,12 @@ PERL_CALLCONV CV* Perl_newXS(pTHX_ const char *name, XSUBADDR_t subaddr, const c #define PERL_ARGS_ASSERT_NEWXS \ assert(subaddr); assert(filename) +PERL_CALLCONV CV * Perl_newXS_deffile(pTHX_ const char *name, XSUBADDR_t subaddr) + __attribute__nonnull__(pTHX_1) + __attribute__nonnull__(pTHX_2); +#define PERL_ARGS_ASSERT_NEWXS_DEFFILE \ + assert(name); assert(subaddr) + PERL_CALLCONV CV * Perl_newXS_flags(pTHX_ const char *name, XSUBADDR_t subaddr, const char *const filename, const char *const proto, U32 flags) __attribute__nonnull__(pTHX_2) __attribute__nonnull__(pTHX_3); @@ -3122,10 +3181,9 @@ PERL_CALLCONV CV * Perl_newXS_flags(pTHX_ const char *name, XSUBADDR_t subaddr, assert(subaddr); assert(filename) PERL_CALLCONV CV * Perl_newXS_len_flags(pTHX_ const char *name, STRLEN len, XSUBADDR_t subaddr, const char *const filename, const char *const proto, SV **const_svp, U32 flags) - __attribute__nonnull__(pTHX_3) - __attribute__nonnull__(pTHX_4); + __attribute__nonnull__(pTHX_3); #define PERL_ARGS_ASSERT_NEWXS_LEN_FLAGS \ - assert(subaddr); assert(filename) + assert(subaddr) PERL_CALLCONV void Perl_new_collate(pTHX_ const char* newcoll); PERL_CALLCONV void Perl_new_ctype(pTHX_ const char* newctype) @@ -3164,6 +3222,13 @@ PERL_CALLCONV char* Perl_ninstr(const char* big, const char* bigend, const char* #define PERL_ARGS_ASSERT_NINSTR \ assert(big); assert(bigend); assert(little); assert(lend) +PERL_CALLCONV_NO_RET void Perl_noperl_die(const char* pat, ...) + __attribute__noreturn__ + __attribute__format__(__printf__,1,2) + __attribute__nonnull__(1); +#define PERL_ARGS_ASSERT_NOPERL_DIE \ + assert(pat) + PERL_CALLCONV int Perl_nothreadhook(pTHX); PERL_CALLCONV OP* Perl_oopsAV(pTHX_ OP* o) __attribute__warn_unused_result__ @@ -3184,9 +3249,6 @@ PERL_CALLCONV void Perl_op_clear(pTHX_ OP* o) #define PERL_ARGS_ASSERT_OP_CLEAR \ assert(o) -PERL_CALLCONV SV* Perl_op_const_sv(pTHX_ const OP* o, CV* cv) - __attribute__warn_unused_result__; - PERL_CALLCONV OP* Perl_op_contextualize(pTHX_ OP* o, I32 context) __attribute__nonnull__(pTHX_1); #define PERL_ARGS_ASSERT_OP_CONTEXTUALIZE \ @@ -3277,6 +3339,11 @@ PERL_CALLCONV PADOFFSET Perl_pad_add_name_sv(pTHX_ SV *name, U32 flags, HV *type #define PERL_ARGS_ASSERT_PAD_ADD_NAME_SV \ assert(name) +PERL_CALLCONV void Perl_pad_add_weakref(pTHX_ CV* func) + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_PAD_ADD_WEAKREF \ + assert(func) + PERL_CALLCONV PADOFFSET Perl_pad_alloc(pTHX_ I32 optype, U32 tmptype); PERL_CALLCONV void Perl_pad_block_start(pTHX_ int full); PERL_CALLCONV HV* Perl_pad_compname_type(pTHX_ const PADOFFSET po) @@ -3322,6 +3389,27 @@ PERL_CALLCONV PAD ** Perl_padlist_store(pTHX_ PADLIST *padlist, I32 key, PAD *va #define PERL_ARGS_ASSERT_PADLIST_STORE \ assert(padlist) +PERL_CALLCONV void Perl_padname_free(pTHX_ PADNAME *pn) + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_PADNAME_FREE \ + assert(pn) + +PERL_CALLCONV PADNAME * Perl_padnamelist_fetch(PADNAMELIST *pnl, SSize_t key) + __attribute__warn_unused_result__ + __attribute__nonnull__(1); +#define PERL_ARGS_ASSERT_PADNAMELIST_FETCH \ + assert(pnl) + +PERL_CALLCONV void Perl_padnamelist_free(pTHX_ PADNAMELIST *pnl) + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_PADNAMELIST_FREE \ + assert(pnl) + +PERL_CALLCONV PADNAME ** Perl_padnamelist_store(pTHX_ PADNAMELIST *pnl, SSize_t key, PADNAME *val) + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_PADNAMELIST_STORE \ + assert(pnl) + PERL_CALLCONV OP* Perl_parse_arithexpr(pTHX_ U32 flags); PERL_CALLCONV OP* Perl_parse_barestmt(pTHX_ U32 flags); PERL_CALLCONV OP* Perl_parse_block(pTHX_ U32 flags); @@ -3372,7 +3460,7 @@ PERL_CALLCONV int perl_run(PerlInterpreter *my_perl) assert(my_perl) PERL_CALLCONV void Perl_pmop_dump(pTHX_ PMOP* pm); -PERL_CALLCONV OP* Perl_pmruntime(pTHX_ OP *o, OP *expr, bool isreg, I32 floor) +PERL_CALLCONV OP* Perl_pmruntime(pTHX_ OP *o, OP *expr, OP *repl, bool isreg, I32 floor) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); #define PERL_ARGS_ASSERT_PMRUNTIME \ @@ -4304,6 +4392,12 @@ PERL_CALLCONV void Perl_sv_free2(pTHX_ SV *const sv, const U32 refcnt) assert(sv) PERL_CALLCONV void Perl_sv_free_arenas(pTHX); +PERL_CALLCONV SV* Perl_sv_get_backrefs(SV *const sv) + __attribute__pure__ + __attribute__nonnull__(1); +#define PERL_ARGS_ASSERT_SV_GET_BACKREFS \ + assert(sv) + PERL_CALLCONV char* Perl_sv_gets(pTHX_ SV *const sv, PerlIO *const fp, I32 append) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); @@ -5153,16 +5247,12 @@ PERL_CALLCONV void Perl_write_to_stderr(pTHX_ SV* msv) #define PERL_ARGS_ASSERT_WRITE_TO_STDERR \ assert(msv) -PERL_CALLCONV void Perl_xs_apiversion_bootcheck(pTHX_ SV *module, const char *api_p, STRLEN api_len) - __attribute__nonnull__(pTHX_1) - __attribute__nonnull__(pTHX_2); -#define PERL_ARGS_ASSERT_XS_APIVERSION_BOOTCHECK \ - assert(module); assert(api_p) - -PERL_CALLCONV void Perl_xs_version_bootcheck(pTHX_ U32 items, U32 ax, const char *xs_p, STRLEN xs_len) - __attribute__nonnull__(pTHX_3); -#define PERL_ARGS_ASSERT_XS_VERSION_BOOTCHECK \ - assert(xs_p) +PERL_CALLCONV void Perl_xs_boot_epilog(pTHX_ const U32 ax); +PERL_CALLCONV I32 Perl_xs_handshake(const U32 key, void * v_my_perl, const char * file, ...) + __attribute__nonnull__(2) + __attribute__nonnull__(3); +#define PERL_ARGS_ASSERT_XS_HANDSHAKE \ + assert(v_my_perl); assert(file) PERL_CALLCONV int Perl_yyerror(pTHX_ const char *const s) __attribute__nonnull__(pTHX_1); @@ -5222,16 +5312,6 @@ PERL_CALLCONV void* Perl_my_cxt_init(pTHX_ int *index, size_t size) #endif #if !(defined(_MSC_VER)) -PERL_CALLCONV_NO_RET OP* Perl_die(pTHX_ const char* pat, ...) - __attribute__noreturn__ - __attribute__format__null_ok__(__printf__,pTHX_1,pTHX_2); - -PERL_CALLCONV_NO_RET OP* Perl_die_sv(pTHX_ SV *baseex) - __attribute__noreturn__ - __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_DIE_SV \ - assert(baseex) - PERL_CALLCONV_NO_RET int Perl_magic_regdatum_set(pTHX_ SV* sv, MAGIC* mg) __attribute__noreturn__ __attribute__nonnull__(pTHX_1) @@ -5239,20 +5319,6 @@ PERL_CALLCONV_NO_RET int Perl_magic_regdatum_set(pTHX_ SV* sv, MAGIC* mg) #define PERL_ARGS_ASSERT_MAGIC_REGDATUM_SET \ assert(sv); assert(mg) -PERL_CALLCONV_NO_RET char* Perl_screaminstr(pTHX_ SV *bigstr, SV *littlestr, I32 start_shift, I32 end_shift, I32 *old_posp, I32 last) - __attribute__noreturn__ - __attribute__nonnull__(pTHX_1) - __attribute__nonnull__(pTHX_2) - __attribute__nonnull__(pTHX_5); -#define PERL_ARGS_ASSERT_SCREAMINSTR \ - assert(bigstr); assert(littlestr); assert(old_posp) - -# if defined(PERL_IMPLICIT_CONTEXT) -PERL_CALLCONV_NO_RET OP* Perl_die_nocontext(const char* pat, ...) - __attribute__noreturn__ - __attribute__format__null_ok__(__printf__,1,2); - -# endif #endif #if !defined(HAS_BZERO) && !defined(HAS_MEMSET) PERL_CALLCONV char* Perl_my_bzero(char* loc, I32 len) @@ -5341,6 +5407,38 @@ STATIC PerlIO * S_doopen_pm(pTHX_ SV *name) # endif #endif +#if !defined(PERL_EXT_RE_BUILD) +# if defined(PERL_IN_REGCOMP_C) +PERL_STATIC_INLINE IV* S_get_invlist_previous_index_addr(SV* invlist) + __attribute__warn_unused_result__ + __attribute__nonnull__(1); +#define PERL_ARGS_ASSERT_GET_INVLIST_PREVIOUS_INDEX_ADDR \ + assert(invlist) + +PERL_STATIC_INLINE bool S_invlist_is_iterating(SV* const invlist) + __attribute__warn_unused_result__ + __attribute__nonnull__(1); +#define PERL_ARGS_ASSERT_INVLIST_IS_ITERATING \ + assert(invlist) + +PERL_STATIC_INLINE IV S_invlist_previous_index(SV* const invlist) + __attribute__warn_unused_result__ + __attribute__nonnull__(1); +#define PERL_ARGS_ASSERT_INVLIST_PREVIOUS_INDEX \ + assert(invlist) + +PERL_STATIC_INLINE void S_invlist_set_previous_index(SV* const invlist, const IV index) + __attribute__nonnull__(1); +#define PERL_ARGS_ASSERT_INVLIST_SET_PREVIOUS_INDEX \ + assert(invlist) + +PERL_STATIC_INLINE void S_invlist_trim(SV* const invlist) + __attribute__nonnull__(1); +#define PERL_ARGS_ASSERT_INVLIST_TRIM \ + assert(invlist) + +# endif +#endif #if !defined(PERL_IMPLICIT_SYS) PERL_CALLCONV I32 Perl_my_pclose(pTHX_ PerlIO* ptr); PERL_CALLCONV PerlIO* Perl_my_popen(pTHX_ const char* cmd, const char* mode) @@ -5430,8 +5528,8 @@ PERL_CALLCONV void Perl_pad_setsv(pTHX_ PADOFFSET po, SV* sv) assert(sv) PERL_CALLCONV SV* Perl_pad_sv(pTHX_ PADOFFSET po); -PERL_CALLCONV void Perl_set_padlist(pTHX_ CV * cv, PADLIST * padlist) - __attribute__nonnull__(pTHX_1); +PERL_CALLCONV void Perl_set_padlist(CV * cv, PADLIST * padlist) + __attribute__nonnull__(1); #define PERL_ARGS_ASSERT_SET_PADLIST \ assert(cv) @@ -5444,9 +5542,6 @@ STATIC void S_cv_dump(pTHX_ const CV *cv, const char *title) # endif # if defined(PERL_IN_REGCOMP_C) -STATIC const char * S_cntrl_to_mnemonic(const U8 c) - __attribute__pure__; - 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); @@ -5755,6 +5850,10 @@ PERL_CALLCONV void Perl_deb_nocontext(const char* pat, ...) #define PERL_ARGS_ASSERT_DEB_NOCONTEXT \ assert(pat) +PERL_CALLCONV_NO_RET OP* Perl_die_nocontext(const char* pat, ...) + __attribute__noreturn__ + __attribute__format__null_ok__(__printf__,1,2); + PERL_CALLCONV char* Perl_form_nocontext(const char* pat, ...) __attribute__format__(__printf__,1,2) __attribute__nonnull__(1); @@ -5831,11 +5930,6 @@ PERL_CALLCONV void Perl_warner_nocontext(U32 err, const char* pat, ...) #define PERL_ARGS_ASSERT_WARNER_NOCONTEXT \ assert(pat) -# if defined(_MSC_VER) -PERL_CALLCONV OP* Perl_die_nocontext(const char* pat, ...) - __attribute__format__null_ok__(__printf__,1,2); - -# endif #endif #if defined(PERL_IMPLICIT_SYS) PERL_CALLCONV PerlInterpreter* perl_alloc_using(struct IPerlMem *ipM, struct IPerlMem *ipMS, struct IPerlMem *ipMP, struct IPerlEnv *ipE, struct IPerlStdIO *ipStd, struct IPerlLIO *ipLIO, struct IPerlDir *ipD, struct IPerlSock *ipS, struct IPerlProc *ipP) @@ -5976,6 +6070,7 @@ STATIC bool S_find_default_stash(pTHX_ HV **stash, const char *name, STRLEN len, #define PERL_ARGS_ASSERT_FIND_DEFAULT_STASH \ assert(stash); assert(name) +PERL_STATIC_INLINE GV* S_gv_fetchmeth_internal(pTHX_ HV* stash, SV* meth, const char* name, STRLEN len, I32 level, U32 flags); STATIC void S_gv_init_svtype(pTHX_ GV *gv, const svtype sv_type) __attribute__nonnull__(pTHX_1); #define PERL_ARGS_ASSERT_GV_INIT_SVTYPE \ @@ -6204,19 +6299,19 @@ STATIC void S_apply_attrs_my(pTHX_ HV *stash, OP *target, OP *attrs, OP **imopsp STATIC I32 S_assignment_type(pTHX_ const OP *o) __attribute__warn_unused_result__; -STATIC void S_bad_type_gv(pTHX_ I32 n, const char *t, GV *gv, U32 flags, const OP *kid) +STATIC void S_bad_type_gv(pTHX_ I32 n, GV *gv, const OP *kid, const char *t) __attribute__nonnull__(pTHX_2) __attribute__nonnull__(pTHX_3) - __attribute__nonnull__(pTHX_5); + __attribute__nonnull__(pTHX_4); #define PERL_ARGS_ASSERT_BAD_TYPE_GV \ - assert(t); assert(gv); assert(kid) + assert(gv); assert(kid); assert(t) -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_pv(pTHX_ I32 n, const char *t, const OP *o, const OP *kid) __attribute__nonnull__(pTHX_2) __attribute__nonnull__(pTHX_3) - __attribute__nonnull__(pTHX_5); + __attribute__nonnull__(pTHX_4); #define PERL_ARGS_ASSERT_BAD_TYPE_PV \ - assert(t); assert(name); assert(kid) + assert(t); assert(o); assert(kid) STATIC void S_clear_special_blocks(pTHX_ const char *const fullname, GV *const gv, CV *const cv) __attribute__nonnull__(pTHX_1) @@ -6389,23 +6484,23 @@ PERL_CALLCONV void Perl_report_redefined_cv(pTHX_ const SV *name, const CV *old_ #endif #if defined(PERL_IN_PAD_C) -STATIC PADOFFSET S_pad_alloc_name(pTHX_ SV *namesv, U32 flags, HV *typestash, HV *ourstash) +STATIC PADOFFSET S_pad_alloc_name(pTHX_ PADNAME *name, U32 flags, HV *typestash, HV *ourstash) __attribute__nonnull__(pTHX_1); #define PERL_ARGS_ASSERT_PAD_ALLOC_NAME \ - assert(namesv) + assert(name) -STATIC void S_pad_check_dup(pTHX_ SV *name, U32 flags, const HV *ourstash) +STATIC void S_pad_check_dup(pTHX_ PADNAME *name, U32 flags, const HV *ourstash) __attribute__nonnull__(pTHX_1); #define PERL_ARGS_ASSERT_PAD_CHECK_DUP \ assert(name) -STATIC PADOFFSET S_pad_findlex(pTHX_ const char *namepv, STRLEN namelen, U32 flags, const CV* cv, U32 seq, int warn, SV** out_capture, SV** out_name_sv, int *out_flags) +STATIC PADOFFSET S_pad_findlex(pTHX_ const char *namepv, STRLEN namelen, U32 flags, const CV* cv, U32 seq, int warn, SV** out_capture, PADNAME** out_name, int *out_flags) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_4) __attribute__nonnull__(pTHX_8) __attribute__nonnull__(pTHX_9); #define PERL_ARGS_ASSERT_PAD_FINDLEX \ - assert(namepv); assert(cv); assert(out_name_sv); assert(out_flags) + assert(namepv); assert(cv); assert(out_name); assert(out_flags) STATIC void S_pad_reset(pTHX); #endif @@ -6464,7 +6559,7 @@ PERL_STATIC_NO_RET void S_usage(pTHX) #endif #if defined(PERL_IN_PP_C) -STATIC void S_do_chomp(pTHX_ SV *retval, SV *sv, bool chomping) +STATIC size_t S_do_chomp(pTHX_ SV *retval, SV *sv, bool chomping) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); #define PERL_ARGS_ASSERT_DO_CHOMP \ @@ -6602,21 +6697,13 @@ STATIC void S_do_oddball(pTHX_ SV **oddkey, SV **firstkey) #define PERL_ARGS_ASSERT_DO_ODDBALL \ assert(oddkey); assert(firstkey) -STATIC SV* S_method_common(pTHX_ SV* meth, U32* hashp) - __attribute__warn_unused_result__ +PERL_STATIC_INLINE HV* S_opmethod_stash(pTHX_ SV* meth) __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_METHOD_COMMON \ +#define PERL_ARGS_ASSERT_OPMETHOD_STASH \ assert(meth) #endif #if defined(PERL_IN_PP_PACK_C) -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); -#define PERL_ARGS_ASSERT_BYTES_TO_UNI \ - assert(start); assert(dest) - STATIC int S_div128(pTHX_ SV *pnum, bool *done) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); @@ -6658,6 +6745,13 @@ STATIC SV* S_mul128(pTHX_ SV *sv, U8 m) #define PERL_ARGS_ASSERT_MUL128 \ assert(sv) +STATIC char * S_my_bytes_to_utf8(const U8 *start, STRLEN len, char *dest, const bool needs_swap) + __attribute__warn_unused_result__ + __attribute__nonnull__(1) + __attribute__nonnull__(3); +#define PERL_ARGS_ASSERT_MY_BYTES_TO_UTF8 \ + assert(start); assert(dest) + STATIC bool S_need_utf8(const char *pat, const char *patend) __attribute__nonnull__(1) __attribute__nonnull__(2); @@ -6780,6 +6874,13 @@ PERL_STATIC_INLINE UV* S__invlist_array_init(SV* const invlist, const bool will_ #define PERL_ARGS_ASSERT__INVLIST_ARRAY_INIT \ assert(invlist) +STATIC SV* S__make_exactf_invlist(pTHX_ RExC_state_t *pRExC_state, regnode *node) + __attribute__warn_unused_result__ + __attribute__nonnull__(pTHX_1) + __attribute__nonnull__(pTHX_2); +#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) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_3); @@ -6808,6 +6909,9 @@ PERL_STATIC_INLINE void S_alloc_maybe_populate_EXACT(pTHX_ RExC_state_t *pRExC_s #define PERL_ARGS_ASSERT_ALLOC_MAYBE_POPULATE_EXACT \ assert(pRExC_state); assert(node); assert(flagp) +STATIC const char * S_cntrl_to_mnemonic(const U8 c) + __attribute__pure__; + PERL_STATIC_INLINE U8 S_compute_EXACTish(RExC_state_t *pRExC_state) __attribute__nonnull__(1); #define PERL_ARGS_ASSERT_COMPUTE_EXACTISH \ @@ -6836,12 +6940,6 @@ PERL_STATIC_INLINE STRLEN* S_get_invlist_iter_addr(SV* invlist) #define PERL_ARGS_ASSERT_GET_INVLIST_ITER_ADDR \ assert(invlist) -PERL_STATIC_INLINE IV* S_get_invlist_previous_index_addr(SV* invlist) - __attribute__warn_unused_result__ - __attribute__nonnull__(1); -#define PERL_ARGS_ASSERT_GET_INVLIST_PREVIOUS_INDEX_ADDR \ - assert(invlist) - STATIC STRLEN S_grok_bslash_N(pTHX_ RExC_state_t *pRExC_state, regnode** nodep, UV *valuep, I32 *flagp, U32 depth, SV** substitute_parse) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_4); @@ -6855,12 +6953,6 @@ STATIC regnode* S_handle_regex_sets(pTHX_ RExC_state_t *pRExC_state, SV ** retur #define PERL_ARGS_ASSERT_HANDLE_REGEX_SETS \ assert(pRExC_state); assert(flagp); assert(oregcomp_parse) -PERL_STATIC_INLINE UV* S_invlist_array(SV* const invlist) - __attribute__warn_unused_result__ - __attribute__nonnull__(1); -#define PERL_ARGS_ASSERT_INVLIST_ARRAY \ - assert(invlist) - PERL_STATIC_INLINE SV* S_invlist_clone(pTHX_ SV* const invlist) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); @@ -6878,12 +6970,6 @@ PERL_STATIC_INLINE UV S_invlist_highest(SV* const invlist) #define PERL_ARGS_ASSERT_INVLIST_HIGHEST \ assert(invlist) -PERL_STATIC_INLINE bool S_invlist_is_iterating(SV* const invlist) - __attribute__warn_unused_result__ - __attribute__nonnull__(1); -#define PERL_ARGS_ASSERT_INVLIST_IS_ITERATING \ - assert(invlist) - PERL_STATIC_INLINE void S_invlist_iterfinish(SV* invlist) __attribute__nonnull__(1); #define PERL_ARGS_ASSERT_INVLIST_ITERFINISH \ @@ -6908,27 +6994,11 @@ PERL_STATIC_INLINE UV S_invlist_max(SV* const invlist) #define PERL_ARGS_ASSERT_INVLIST_MAX \ assert(invlist) -PERL_STATIC_INLINE IV S_invlist_previous_index(SV* const invlist) - __attribute__warn_unused_result__ - __attribute__nonnull__(1); -#define PERL_ARGS_ASSERT_INVLIST_PREVIOUS_INDEX \ - assert(invlist) - PERL_STATIC_INLINE void S_invlist_set_len(pTHX_ SV* const invlist, const UV len, const bool offset) __attribute__nonnull__(pTHX_1); #define PERL_ARGS_ASSERT_INVLIST_SET_LEN \ assert(invlist) -PERL_STATIC_INLINE void S_invlist_set_previous_index(SV* const invlist, const IV index) - __attribute__nonnull__(1); -#define PERL_ARGS_ASSERT_INVLIST_SET_PREVIOUS_INDEX \ - assert(invlist) - -PERL_STATIC_INLINE void S_invlist_trim(SV* const invlist) - __attribute__nonnull__(1); -#define PERL_ARGS_ASSERT_INVLIST_TRIM \ - assert(invlist) - STATIC bool S_is_ssc_worth_it(const RExC_state_t * pRExC_state, const regnode_ssc * ssc) __attribute__nonnull__(1) __attribute__nonnull__(2); @@ -7024,7 +7094,7 @@ STATIC regnode* S_regbranch(pTHX_ RExC_state_t *pRExC_state, I32 *flagp, I32 fir #define PERL_ARGS_ASSERT_REGBRANCH \ assert(pRExC_state); assert(flagp) -STATIC regnode* S_regclass(pTHX_ RExC_state_t *pRExC_state, I32 *flagp, U32 depth, const bool stop_at_1, bool allow_multi_fold, const bool silence_non_portable, SV** ret_invlist) +STATIC regnode* S_regclass(pTHX_ RExC_state_t *pRExC_state, I32 *flagp, U32 depth, const bool stop_at_1, bool allow_multi_fold, const bool silence_non_portable, const bool strict, SV** ret_invlist) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); #define PERL_ARGS_ASSERT_REGCLASS \ @@ -7067,12 +7137,6 @@ STATIC void S_regtail(pTHX_ RExC_state_t *pRExC_state, regnode *p, const regnode #define PERL_ARGS_ASSERT_REGTAIL \ assert(pRExC_state); assert(p); assert(val) -PERL_STATIC_INLINE STRLEN S_reguni(pTHX_ const RExC_state_t *pRExC_state, UV uv, char *s) - __attribute__nonnull__(pTHX_1) - __attribute__nonnull__(pTHX_3); -#define PERL_ARGS_ASSERT_REGUNI \ - assert(pRExC_state); assert(s) - STATIC void S_scan_commit(pTHX_ const RExC_state_t *pRExC_state, struct scan_data_t *data, SSize_t *minlenp, int is_inf) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2) @@ -7241,6 +7305,12 @@ PERL_STATIC_INLINE bool* S_get_invlist_offset_addr(SV* invlist) #define PERL_ARGS_ASSERT_GET_INVLIST_OFFSET_ADDR \ assert(invlist) +PERL_STATIC_INLINE UV* S_invlist_array(SV* const invlist) + __attribute__warn_unused_result__ + __attribute__nonnull__(1); +#define PERL_ARGS_ASSERT_INVLIST_ARRAY \ + assert(invlist) + #endif #if defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_REGEXEC_C) || defined(PERL_IN_UTF8_C) || defined(PERL_IN_TOKE_C) PERL_CALLCONV SV* Perl__core_swash_init(pTHX_ const char* pkg, const char* name, SV* listsv, I32 minbits, I32 none, SV* invlist, U8* const flags_p) @@ -7344,6 +7414,35 @@ PERL_CALLCONV SV* Perl__swash_to_invlist(pTHX_ SV* const swash) #endif #if defined(PERL_IN_REGEXEC_C) +STATIC PL_SB_enum S_advance_one_SB(pTHX_ U8 ** curpos, const U8 * const strend, const bool utf8_target) + __attribute__warn_unused_result__ + __attribute__nonnull__(pTHX_1) + __attribute__nonnull__(pTHX_2); +#define PERL_ARGS_ASSERT_ADVANCE_ONE_SB \ + assert(curpos); assert(strend) + +STATIC PL_WB_enum S_advance_one_WB(pTHX_ U8 ** curpos, const U8 * const strend, const bool utf8_target) + __attribute__warn_unused_result__ + __attribute__nonnull__(pTHX_1) + __attribute__nonnull__(pTHX_2); +#define PERL_ARGS_ASSERT_ADVANCE_ONE_WB \ + assert(curpos); assert(strend) + +STATIC PL_SB_enum S_backup_one_SB(pTHX_ const U8 * const strbeg, U8 ** curpos, const bool utf8_target) + __attribute__warn_unused_result__ + __attribute__nonnull__(pTHX_1) + __attribute__nonnull__(pTHX_2); +#define PERL_ARGS_ASSERT_BACKUP_ONE_SB \ + assert(strbeg); assert(curpos) + +STATIC PL_WB_enum S_backup_one_WB(pTHX_ PL_WB_enum * previous, const U8 * const strbeg, U8 ** curpos, const bool utf8_target) + __attribute__warn_unused_result__ + __attribute__nonnull__(pTHX_1) + __attribute__nonnull__(pTHX_2) + __attribute__nonnull__(pTHX_3); +#define PERL_ARGS_ASSERT_BACKUP_ONE_WB \ + assert(previous); assert(strbeg); assert(curpos) + 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) @@ -7362,6 +7461,25 @@ STATIC bool S_isFOO_utf8_lc(pTHX_ const U8 classnum, const U8* character) #define PERL_ARGS_ASSERT_ISFOO_UTF8_LC \ assert(character) +STATIC bool S_isGCB(const PL_GCB_enum before, const PL_GCB_enum after) + __attribute__warn_unused_result__; + +STATIC bool S_isSB(pTHX_ PL_SB_enum before, PL_SB_enum after, const U8 * const strbeg, const U8 * const curpos, const U8 * const strend, const bool utf8_target) + __attribute__warn_unused_result__ + __attribute__nonnull__(pTHX_3) + __attribute__nonnull__(pTHX_4) + __attribute__nonnull__(pTHX_5); +#define PERL_ARGS_ASSERT_ISSB \ + assert(strbeg); assert(curpos); assert(strend) + +STATIC bool S_isWB(pTHX_ PL_WB_enum previous, PL_WB_enum before, PL_WB_enum after, const U8 * const strbeg, const U8 * const curpos, const U8 * const strend, const bool utf8_target) + __attribute__warn_unused_result__ + __attribute__nonnull__(pTHX_4) + __attribute__nonnull__(pTHX_5) + __attribute__nonnull__(pTHX_6); +#define PERL_ARGS_ASSERT_ISWB \ + assert(strbeg); assert(curpos); assert(strend) + STATIC I32 S_reg_check_named_buff_matched(const regexp *rex, const regnode *scan) __attribute__warn_unused_result__ __attribute__nonnull__(1) @@ -7493,7 +7611,11 @@ STATIC SV * S_find_hash_subscript(pTHX_ const HV *const hv, const SV *const val) #define PERL_ARGS_ASSERT_FIND_HASH_SUBSCRIPT \ assert(val) -STATIC SV* S_find_uninit_var(pTHX_ const OP *const obase, const SV *const uninit_sv, bool top); +STATIC SV* S_find_uninit_var(pTHX_ const OP *const obase, const SV *const uninit_sv, bool match, const char **desc_p) + __attribute__nonnull__(pTHX_4); +#define PERL_ARGS_ASSERT_FIND_UNINIT_VAR \ + assert(desc_p) + STATIC bool S_glob_2number(pTHX_ GV* const gv) __attribute__nonnull__(pTHX_1); #define PERL_ARGS_ASSERT_GLOB_2NUMBER \ @@ -7897,6 +8019,11 @@ STATIC SV * S_with_queued_errors(pTHX_ SV *ex) #define PERL_ARGS_ASSERT_WITH_QUEUED_ERRORS \ assert(ex) +STATIC void S_xs_version_bootcheck(pTHX_ U32 items, U32 ax, const char *xs_p, STRLEN xs_len) + __attribute__nonnull__(pTHX_3); +#define PERL_ARGS_ASSERT_XS_VERSION_BOOTCHECK \ + assert(xs_p) + # if defined(PERL_MEM_LOG) && !defined(PERL_MEM_LOG_NOIMPL) STATIC void S_mem_log_common(enum mem_log_type mlt, const UV n, const UV typesize, const char *type_name, const SV *sv, Malloc_t oldalloc, Malloc_t newalloc, const char *filename, const int linenumber, const char *funcname) __attribute__nonnull__(4) @@ -8015,6 +8142,20 @@ PERL_CALLCONV PADLIST * Perl_padlist_dup(pTHX_ PADLIST *srcpad, CLONE_PARAMS *pa #define PERL_ARGS_ASSERT_PADLIST_DUP \ assert(srcpad); assert(param) +PERL_CALLCONV PADNAME * Perl_padname_dup(pTHX_ PADNAME *src, CLONE_PARAMS *param) + __attribute__warn_unused_result__ + __attribute__nonnull__(pTHX_1) + __attribute__nonnull__(pTHX_2); +#define PERL_ARGS_ASSERT_PADNAME_DUP \ + assert(src); assert(param) + +PERL_CALLCONV PADNAMELIST * Perl_padnamelist_dup(pTHX_ PADNAMELIST *srcpad, CLONE_PARAMS *param) + __attribute__warn_unused_result__ + __attribute__nonnull__(pTHX_1) + __attribute__nonnull__(pTHX_2); +#define PERL_ARGS_ASSERT_PADNAMELIST_DUP \ + assert(srcpad); assert(param) + PERL_CALLCONV yy_parser* Perl_parser_dup(pTHX_ const yy_parser *const proto, CLONE_PARAMS *const param) __attribute__nonnull__(pTHX_2); #define PERL_ARGS_ASSERT_PARSER_DUP \ @@ -8074,6 +8215,8 @@ PERL_CALLCONV SV* Perl_sv_dup_inc(pTHX_ const SV *const sstr, CLONE_PARAMS *cons #endif #if defined(USE_LOCALE) && (defined(PERL_IN_LOCALE_C) || defined (PERL_EXT_POSIX)) PERL_CALLCONV bool Perl__is_cur_LC_category_utf8(pTHX_ int category); +#endif +#if defined(USE_LOCALE) && defined(PERL_IN_LOCALE_C) STATIC char* S_stdize_locale(pTHX_ char* locs) __attribute__nonnull__(pTHX_1); #define PERL_ARGS_ASSERT_STDIZE_LOCALE \ @@ -8194,27 +8337,12 @@ PERL_CALLCONV int Perl_do_spawn_nowait(pTHX_ char* cmd) #endif #if defined(_MSC_VER) -PERL_CALLCONV OP* Perl_die(pTHX_ const char* pat, ...) - __attribute__format__null_ok__(__printf__,pTHX_1,pTHX_2); - -PERL_CALLCONV OP* Perl_die_sv(pTHX_ SV *baseex) - __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_DIE_SV \ - assert(baseex) - PERL_CALLCONV int Perl_magic_regdatum_set(pTHX_ SV* sv, MAGIC* mg) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); #define PERL_ARGS_ASSERT_MAGIC_REGDATUM_SET \ assert(sv); assert(mg) -PERL_CALLCONV char* Perl_screaminstr(pTHX_ SV *bigstr, SV *littlestr, I32 start_shift, I32 end_shift, I32 *old_posp, I32 last) - __attribute__nonnull__(pTHX_1) - __attribute__nonnull__(pTHX_2) - __attribute__nonnull__(pTHX_5); -#define PERL_ARGS_ASSERT_SCREAMINSTR \ - assert(bigstr); assert(littlestr); assert(old_posp) - #endif #ifdef PERL_CORE # include "pp_proto.h"