X-Git-Url: https://perl5.git.perl.org/perl5.git/blobdiff_plain/c3a9a7905da9fe1983f7fb4f13851cbd776c98ad..a4729c0f7020647a53b70f68e6fb1cec42d4d8e1:/proto.h diff --git a/proto.h b/proto.h index b2e9e90..1fc1180 100644 --- a/proto.h +++ b/proto.h @@ -119,12 +119,21 @@ PERL_CALLCONV void Perl_set_context(void *t) #define PERL_ARGS_ASSERT_SET_CONTEXT \ assert(t) +PERL_CALLCONV I32 Perl_regcurly(const char *s) + __attribute__warn_unused_result__ + __attribute__pure__ + __attribute__nonnull__(1); +#define PERL_ARGS_ASSERT_REGCURLY \ + assert(s) + END_EXTERN_C /* functions with flag 'n' should come before here */ START_EXTERN_C # include "pp_proto.h" +PERL_CALLCONV bool Perl_try_amagic_bin(pTHX_ int method, int flags); +PERL_CALLCONV bool Perl_try_amagic_un(pTHX_ int method, int flags); PERL_CALLCONV SV* Perl_amagic_call(pTHX_ SV* left, SV* right, int method, int dir) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); @@ -257,7 +266,7 @@ PERL_CALLCONV IV* Perl_av_iter_p(pTHX_ AV *av) #define PERL_ARGS_ASSERT_AV_ITER_P \ assert(av) -#if defined(PERL_IN_AV_C) || defined(PERL_DECL_PROT) +#if defined(PERL_IN_AV_C) STATIC MAGIC* S_get_aux_mg(pTHX_ AV *av) __attribute__nonnull__(pTHX_1); #define PERL_ARGS_ASSERT_GET_AUX_MG \ @@ -280,6 +289,11 @@ PERL_CALLCONV I32 Perl_block_gimme(pTHX) PERL_CALLCONV int Perl_block_start(pTHX_ int full) __attribute__warn_unused_result__; +PERL_CALLCONV void Perl_blockhook_register(pTHX_ BHK *hk) + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_BLOCKHOOK_REGISTER \ + assert(hk) + PERL_CALLCONV void Perl_boot_core_UNIVERSAL(pTHX); PERL_CALLCONV void Perl_boot_core_PerlIO(pTHX); PERL_CALLCONV void Perl_call_list(pTHX_ I32 oldscope, AV *paramList) @@ -314,6 +328,12 @@ PERL_CALLCONV OP* Perl_convert(pTHX_ I32 optype, I32 flags, OP* o) __attribute__warn_unused_result__; PERL_CALLCONV PERL_CONTEXT* Perl_create_eval_scope(pTHX_ U32 flags); +PERL_CALLCONV void Perl_croak_sv(pTHX_ SV *baseex) + __attribute__noreturn__ + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_CROAK_SV \ + assert(baseex) + PERL_CALLCONV void Perl_croak(pTHX_ const char* pat, ...) __attribute__noreturn__ __attribute__format__null_ok__(__printf__,pTHX_1,pTHX_2); @@ -321,6 +341,9 @@ PERL_CALLCONV void Perl_croak(pTHX_ const char* pat, ...) PERL_CALLCONV void Perl_vcroak(pTHX_ const char* pat, va_list* args) __attribute__noreturn__; +PERL_CALLCONV void Perl_croak_no_modify(pTHX) + __attribute__noreturn__; + PERL_CALLCONV void Perl_croak_xs_usage(pTHX_ const CV *const cv, const char *const params) __attribute__noreturn__ __attribute__nonnull__(pTHX_1) @@ -335,10 +358,7 @@ PERL_CALLCONV void Perl_croak_nocontext(const char* pat, ...) __attribute__format__null_ok__(__printf__,1,2); PERL_CALLCONV OP* Perl_die_nocontext(const char* pat, ...) - __attribute__format__(__printf__,1,2) - __attribute__nonnull__(1); -#define PERL_ARGS_ASSERT_DIE_NOCONTEXT \ - assert(pat) + __attribute__format__null_ok__(__printf__,1,2); PERL_CALLCONV void Perl_deb_nocontext(const char* pat, ...) __attribute__format__(__printf__,1,2) @@ -509,33 +529,30 @@ PERL_CALLCONV I32 Perl_debop(pTHX_ const OP* o) PERL_CALLCONV I32 Perl_debstack(pTHX); PERL_CALLCONV I32 Perl_debstackptrs(pTHX); -PERL_CALLCONV char* Perl_delimcpy(pTHX_ char* to, const char* toend, const char* from, const char* fromend, int delim, I32* retlen) - __attribute__nonnull__(pTHX_1) - __attribute__nonnull__(pTHX_2) - __attribute__nonnull__(pTHX_3) - __attribute__nonnull__(pTHX_4) - __attribute__nonnull__(pTHX_6); +PERL_CALLCONV char* Perl_delimcpy(char* to, const char* toend, const char* from, const char* fromend, int delim, I32* retlen) + __attribute__nonnull__(1) + __attribute__nonnull__(2) + __attribute__nonnull__(3) + __attribute__nonnull__(4) + __attribute__nonnull__(6); #define PERL_ARGS_ASSERT_DELIMCPY \ assert(to); assert(toend); assert(from); assert(fromend); assert(retlen) PERL_CALLCONV void Perl_delete_eval_scope(pTHX); -PERL_CALLCONV void Perl_deprecate(pTHX_ const char *const s) - __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_DEPRECATE \ - assert(s) - -PERL_CALLCONV void Perl_deprecate_old(pTHX_ const char *const s) +PERL_CALLCONV OP* Perl_die_sv(pTHX_ SV *baseex) __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_DEPRECATE_OLD \ - assert(s) +#define PERL_ARGS_ASSERT_DIE_SV \ + assert(baseex) PERL_CALLCONV OP* Perl_die(pTHX_ const char* pat, ...) __attribute__format__null_ok__(__printf__,pTHX_1,pTHX_2); -#if defined(PERL_IN_UTIL_C) || defined(PERL_DECL_PROT) -STATIC OP* S_vdie(pTHX_ const char* pat, va_list* args); -#endif -PERL_CALLCONV OP* Perl_die_where(pTHX_ const char* message, STRLEN msglen); +PERL_CALLCONV void Perl_die_unwind(pTHX_ SV* msv) + __attribute__noreturn__ + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_DIE_UNWIND \ + assert(msv) + PERL_CALLCONV void Perl_dounwind(pTHX_ I32 cxix); /* PERL_CALLCONV bool Perl_do_aexec(pTHX_ SV* really, SV** mark, SV** sp) __attribute__nonnull__(pTHX_2) @@ -607,7 +624,7 @@ PERL_CALLCONV bool Perl_do_exec3(pTHX_ const char *incmd, int fd, int do_report) #endif PERL_CALLCONV void Perl_do_execfree(pTHX); -#if defined(PERL_IN_DOIO_C) || defined(PERL_DECL_PROT) +#if defined(PERL_IN_DOIO_C) STATIC void S_exec_failed(pTHX_ const char *cmd, int fd, int do_report) __attribute__nonnull__(pTHX_1); #define PERL_ARGS_ASSERT_EXEC_FAILED \ @@ -742,6 +759,7 @@ PERL_CALLCONV I32 Perl_dowantarray(pTHX) __attribute__warn_unused_result__; PERL_CALLCONV void Perl_dump_all(pTHX); +PERL_CALLCONV void Perl_dump_all_perl(pTHX_ bool justperl); PERL_CALLCONV void Perl_dump_eval(pTHX); #if defined(DUMP_FDS) PERL_CALLCONV void Perl_dump_fds(pTHX_ char* s) @@ -771,11 +789,21 @@ PERL_CALLCONV void Perl_dump_packsubs(pTHX_ const HV* stash) #define PERL_ARGS_ASSERT_DUMP_PACKSUBS \ assert(stash) +PERL_CALLCONV void Perl_dump_packsubs_perl(pTHX_ const HV* stash, bool justperl) + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_DUMP_PACKSUBS_PERL \ + assert(stash) + PERL_CALLCONV void Perl_dump_sub(pTHX_ const GV* gv) __attribute__nonnull__(pTHX_1); #define PERL_ARGS_ASSERT_DUMP_SUB \ assert(gv) +PERL_CALLCONV void Perl_dump_sub_perl(pTHX_ const GV* gv, bool justperl) + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_DUMP_SUB_PERL \ + assert(gv) + PERL_CALLCONV void Perl_fbm_compile(pTHX_ SV* sv, U32 flags) __attribute__nonnull__(pTHX_1); #define PERL_ARGS_ASSERT_FBM_COMPILE \ @@ -794,7 +822,7 @@ PERL_CALLCONV char* Perl_find_script(pTHX_ const char *scriptname, bool dosearch #define PERL_ARGS_ASSERT_FIND_SCRIPT \ assert(scriptname) -#if defined(PERL_IN_OP_C) || defined(PERL_DECL_PROT) +#if defined(PERL_IN_OP_C) STATIC OP* S_force_list(pTHX_ OP* arg); STATIC OP* S_fold_constants(pTHX_ OP *o) __attribute__nonnull__(pTHX_1); @@ -814,7 +842,7 @@ PERL_CALLCONV char* Perl_vform(pTHX_ const char* pat, va_list* args) assert(pat) PERL_CALLCONV void Perl_free_tmps(pTHX); -#if defined(PERL_IN_OP_C) || defined(PERL_DECL_PROT) +#if defined(PERL_IN_OP_C) STATIC OP* S_gen_constant_list(pTHX_ OP* o); #endif #if !defined(HAS_GETENV_LEN) @@ -832,21 +860,10 @@ PERL_CALLCONV void Perl_get_db_sub(pTHX_ SV **svp, CV *cv) 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) - __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_GV_AVADD \ - assert(gv) - -PERL_CALLCONV GV* Perl_gv_HVadd(pTHX_ GV* gv) - __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_GV_HVADD \ - assert(gv) - -PERL_CALLCONV GV* Perl_gv_IOadd(pTHX_ GV* gv) - __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_GV_IOADD \ - assert(gv) - +PERL_CALLCONV GV* Perl_gv_add_by_type(pTHX_ GV *gv, svtype type); +/* PERL_CALLCONV GV* Perl_gv_AVadd(pTHX_ GV *gv); */ +/* PERL_CALLCONV GV* Perl_gv_HVadd(pTHX_ GV *gv); */ +/* PERL_CALLCONV GV* Perl_gv_IOadd(pTHX_ GV* gv); */ PERL_CALLCONV GV* Perl_gv_autoload4(pTHX_ HV* stash, const char* name, STRLEN len, I32 method) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_2); @@ -942,6 +959,11 @@ PERL_CALLCONV GP * Perl_newGP(pTHX_ GV *const gv) #define PERL_ARGS_ASSERT_NEWGP \ assert(gv) +PERL_CALLCONV void Perl_cvgv_set(pTHX_ CV* cv, GV* gv) + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_CVGV_SET \ + assert(cv) + PERL_CALLCONV void Perl_gv_init(pTHX_ GV* gv, HV* stash, const char* name, STRLEN len, int multi) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_3); @@ -954,6 +976,11 @@ PERL_CALLCONV void Perl_gv_name_set(pTHX_ GV* gv, const char *name, U32 len, U32 #define PERL_ARGS_ASSERT_GV_NAME_SET \ assert(gv); assert(name) +PERL_CALLCONV void Perl_gv_try_downgrade(pTHX_ GV* gv) + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_GV_TRY_DOWNGRADE \ + assert(gv) + PERL_CALLCONV HV* Perl_gv_stashpv(pTHX_ const char* name, I32 flags) __attribute__nonnull__(pTHX_1); #define PERL_ARGS_ASSERT_GV_STASHPV \ @@ -1014,6 +1041,11 @@ PERL_CALLCONV void* Perl_hv_common_key_len(pTHX_ HV *hv, const char *key, I32 kl #define PERL_ARGS_ASSERT_HV_COMMON_KEY_LEN \ assert(key) +PERL_CALLCONV STRLEN Perl_hv_fill(pTHX_ HV const *const hv) + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_HV_FILL \ + assert(hv) + PERL_CALLCONV void Perl_hv_free_ent(pTHX_ HV *hv, HE *entryK) __attribute__nonnull__(pTHX_1); #define PERL_ARGS_ASSERT_HV_FREE_ENT \ @@ -1078,7 +1110,7 @@ PERL_CALLCONV HV * Perl_refcounted_he_chain_2hv(pTHX_ const struct refcounted_he 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); -#if defined(PERL_IN_HV_C) || defined(PERL_DECL_PROT) +#if defined(PERL_IN_HV_C) STATIC struct refcounted_he * S_refcounted_he_new_common(pTHX_ struct refcounted_he *const parent, const char *const key_p, const STRLEN key_len, const char flags, char value_type, const void *value, const STRLEN value_len) __attribute__nonnull__(pTHX_2) __attribute__nonnull__(pTHX_6); @@ -1090,27 +1122,39 @@ STATIC struct refcounted_he * S_refcounted_he_new_common(pTHX_ struct refcounted /* PERL_CALLCONV HE* Perl_hv_store_ent(pTHX_ HV *hv, SV *key, SV *val, U32 hash); */ /* PERL_CALLCONV SV** Perl_hv_store_flags(pTHX_ HV *hv, const char *key, I32 klen, SV *val, U32 hash, int flags); */ PERL_CALLCONV void Perl_hv_undef(pTHX_ HV *hv); -PERL_CALLCONV I32 Perl_ibcmp(pTHX_ const char* a, const char* b, I32 len) - __attribute__pure__ +/* PERL_CALLCONV I32 ibcmp(pTHX_ const char* a, const char* b, I32 len) __attribute__nonnull__(pTHX_1) - __attribute__nonnull__(pTHX_2); -#define PERL_ARGS_ASSERT_IBCMP \ - assert(a); assert(b) + __attribute__nonnull__(pTHX_2); */ -PERL_CALLCONV I32 Perl_ibcmp_locale(pTHX_ const char* a, const char* b, I32 len) +PERL_CALLCONV I32 Perl_foldEQ(const char* a, const char* b, I32 len) __attribute__pure__ + __attribute__nonnull__(1) + __attribute__nonnull__(2); +#define PERL_ARGS_ASSERT_FOLDEQ \ + assert(a); assert(b) + +/* PERL_CALLCONV I32 ibcmp_locale(pTHX_ const char* a, const char* b, I32 len) __attribute__nonnull__(pTHX_1) - __attribute__nonnull__(pTHX_2); -#define PERL_ARGS_ASSERT_IBCMP_LOCALE \ + __attribute__nonnull__(pTHX_2); */ + +PERL_CALLCONV I32 Perl_foldEQ_locale(const char* a, const char* b, I32 len) + __attribute__pure__ + __attribute__nonnull__(1) + __attribute__nonnull__(2); +#define PERL_ARGS_ASSERT_FOLDEQ_LOCALE \ assert(a); assert(b) -PERL_CALLCONV I32 Perl_ibcmp_utf8(pTHX_ const char *s1, char **pe1, UV l1, bool u1, const char *s2, char **pe2, UV l2, bool u2) +/* PERL_CALLCONV I32 ibcmp_utf8(pTHX_ const char *s1, char **pe1, UV l1, bool u1, const char *s2, char **pe2, UV l2, bool u2) + __attribute__nonnull__(pTHX_1) + __attribute__nonnull__(pTHX_5); */ + +PERL_CALLCONV I32 Perl_foldEQ_utf8(pTHX_ const char *s1, char **pe1, UV l1, bool u1, const char *s2, char **pe2, UV l2, bool u2) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_5); -#define PERL_ARGS_ASSERT_IBCMP_UTF8 \ +#define PERL_ARGS_ASSERT_FOLDEQ_UTF8 \ assert(s1); assert(s2) -#if defined(PERL_IN_DOIO_C) || defined(PERL_DECL_PROT) +#if defined(PERL_IN_DOIO_C) STATIC bool S_ingroup(pTHX_ Gid_t testgid, bool effective) __attribute__warn_unused_result__; @@ -1128,11 +1172,11 @@ PERL_CALLCONV void Perl_init_tm(pTHX_ struct tm *ptm) assert(ptm) PERL_CALLCONV U32 Perl_intro_my(pTHX); -PERL_CALLCONV char* Perl_instr(pTHX_ const char* big, const char* little) +PERL_CALLCONV char* Perl_instr(const char* big, const char* little) __attribute__warn_unused_result__ __attribute__pure__ - __attribute__nonnull__(pTHX_1) - __attribute__nonnull__(pTHX_2); + __attribute__nonnull__(1) + __attribute__nonnull__(2); #define PERL_ARGS_ASSERT_INSTR \ assert(big); assert(little) @@ -1163,10 +1207,6 @@ PERL_CALLCONV bool Perl_is_uni_alnum(pTHX_ UV c) __attribute__warn_unused_result__ __attribute__pure__; -PERL_CALLCONV bool Perl_is_uni_alnumc(pTHX_ UV c) - __attribute__warn_unused_result__ - __attribute__pure__; - PERL_CALLCONV bool Perl_is_uni_idfirst(pTHX_ UV c) __attribute__warn_unused_result__ __attribute__pure__; @@ -1243,10 +1283,6 @@ PERL_CALLCONV bool Perl_is_uni_alnum_lc(pTHX_ UV c) __attribute__warn_unused_result__ __attribute__pure__; -PERL_CALLCONV bool Perl_is_uni_alnumc_lc(pTHX_ UV c) - __attribute__warn_unused_result__ - __attribute__pure__; - PERL_CALLCONV bool Perl_is_uni_idfirst_lc(pTHX_ UV c) __attribute__warn_unused_result__ __attribute__pure__; @@ -1295,23 +1331,28 @@ PERL_CALLCONV bool Perl_is_uni_xdigit_lc(pTHX_ UV c) __attribute__warn_unused_result__ __attribute__pure__; -PERL_CALLCONV STRLEN Perl_is_utf8_char(pTHX_ const U8 *s) - __attribute__nonnull__(pTHX_1); +PERL_CALLCONV bool Perl_is_ascii_string(const U8 *s, STRLEN len) + __attribute__nonnull__(1); +#define PERL_ARGS_ASSERT_IS_ASCII_STRING \ + assert(s) + +PERL_CALLCONV STRLEN Perl_is_utf8_char(const U8 *s) + __attribute__nonnull__(1); #define PERL_ARGS_ASSERT_IS_UTF8_CHAR \ assert(s) -PERL_CALLCONV bool Perl_is_utf8_string(pTHX_ const U8 *s, STRLEN len) - __attribute__nonnull__(pTHX_1); +PERL_CALLCONV bool Perl_is_utf8_string(const U8 *s, STRLEN len) + __attribute__nonnull__(1); #define PERL_ARGS_ASSERT_IS_UTF8_STRING \ assert(s) -/* PERL_CALLCONV bool Perl_is_utf8_string_loc(pTHX_ const U8 *s, STRLEN len, const U8 **p) - __attribute__nonnull__(pTHX_1); */ +/* PERL_CALLCONV bool Perl_is_utf8_string_loc(const U8 *s, STRLEN len, const U8 **p) + __attribute__nonnull__(1); */ #define PERL_ARGS_ASSERT_IS_UTF8_STRING_LOC \ assert(s) -PERL_CALLCONV bool Perl_is_utf8_string_loclen(pTHX_ const U8 *s, STRLEN len, const U8 **ep, STRLEN *el) - __attribute__nonnull__(pTHX_1); +PERL_CALLCONV bool Perl_is_utf8_string_loclen(const U8 *s, STRLEN len, const U8 **ep, STRLEN *el) + __attribute__nonnull__(1); #define PERL_ARGS_ASSERT_IS_UTF8_STRING_LOCLEN \ assert(s) @@ -1321,12 +1362,6 @@ PERL_CALLCONV bool Perl_is_utf8_alnum(pTHX_ const U8 *p) #define PERL_ARGS_ASSERT_IS_UTF8_ALNUM \ assert(p) -PERL_CALLCONV bool Perl_is_utf8_alnumc(pTHX_ const U8 *p) - __attribute__warn_unused_result__ - __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_IS_UTF8_ALNUMC \ - assert(p) - PERL_CALLCONV bool Perl_is_utf8_idfirst(pTHX_ const U8 *p) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); @@ -1357,6 +1392,18 @@ PERL_CALLCONV bool Perl_is_utf8_space(pTHX_ const U8 *p) #define PERL_ARGS_ASSERT_IS_UTF8_SPACE \ assert(p) +PERL_CALLCONV bool Perl_is_utf8_perl_space(pTHX_ const U8 *p) + __attribute__warn_unused_result__ + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_IS_UTF8_PERL_SPACE \ + assert(p) + +PERL_CALLCONV bool Perl_is_utf8_perl_word(pTHX_ const U8 *p) + __attribute__warn_unused_result__ + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_IS_UTF8_PERL_WORD \ + assert(p) + PERL_CALLCONV bool Perl_is_utf8_cntrl(pTHX_ const U8 *p) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); @@ -1369,6 +1416,12 @@ PERL_CALLCONV bool Perl_is_utf8_digit(pTHX_ const U8 *p) #define PERL_ARGS_ASSERT_IS_UTF8_DIGIT \ assert(p) +PERL_CALLCONV bool Perl_is_utf8_posix_digit(pTHX_ const U8 *p) + __attribute__warn_unused_result__ + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_IS_UTF8_POSIX_DIGIT \ + assert(p) + PERL_CALLCONV bool Perl_is_utf8_graph(pTHX_ const U8 *p) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); @@ -1411,6 +1464,66 @@ PERL_CALLCONV bool Perl_is_utf8_mark(pTHX_ const U8 *p) #define PERL_ARGS_ASSERT_IS_UTF8_MARK \ assert(p) +PERL_CALLCONV bool Perl_is_utf8_X_begin(pTHX_ const U8 *p) + __attribute__warn_unused_result__ + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_IS_UTF8_X_BEGIN \ + assert(p) + +PERL_CALLCONV bool Perl_is_utf8_X_extend(pTHX_ const U8 *p) + __attribute__warn_unused_result__ + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_IS_UTF8_X_EXTEND \ + assert(p) + +PERL_CALLCONV bool Perl_is_utf8_X_prepend(pTHX_ const U8 *p) + __attribute__warn_unused_result__ + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_IS_UTF8_X_PREPEND \ + assert(p) + +PERL_CALLCONV bool Perl_is_utf8_X_non_hangul(pTHX_ const U8 *p) + __attribute__warn_unused_result__ + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_IS_UTF8_X_NON_HANGUL \ + assert(p) + +PERL_CALLCONV bool Perl_is_utf8_X_L(pTHX_ const U8 *p) + __attribute__warn_unused_result__ + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_IS_UTF8_X_L \ + assert(p) + +PERL_CALLCONV bool Perl_is_utf8_X_LV(pTHX_ const U8 *p) + __attribute__warn_unused_result__ + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_IS_UTF8_X_LV \ + assert(p) + +PERL_CALLCONV bool Perl_is_utf8_X_LVT(pTHX_ const U8 *p) + __attribute__warn_unused_result__ + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_IS_UTF8_X_LVT \ + assert(p) + +PERL_CALLCONV bool Perl_is_utf8_X_LV_LVT_V(pTHX_ const U8 *p) + __attribute__warn_unused_result__ + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_IS_UTF8_X_LV_LVT_V \ + assert(p) + +PERL_CALLCONV bool Perl_is_utf8_X_T(pTHX_ const U8 *p) + __attribute__warn_unused_result__ + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_IS_UTF8_X_T \ + assert(p) + +PERL_CALLCONV bool Perl_is_utf8_X_V(pTHX_ const U8 *p) + __attribute__warn_unused_result__ + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_IS_UTF8_X_V \ + assert(p) + PERL_CALLCONV OP* Perl_jmaybe(pTHX_ OP *o) __attribute__nonnull__(pTHX_1); #define PERL_ARGS_ASSERT_JMAYBE \ @@ -1422,9 +1535,52 @@ PERL_CALLCONV I32 Perl_keyword(pTHX_ const char *name, I32 len, bool all_keyword #define PERL_ARGS_ASSERT_KEYWORD \ assert(name) +#if defined(PERL_IN_OP_C) +STATIC OP* S_opt_scalarhv(pTHX_ OP* rep_op) + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_OPT_SCALARHV \ + assert(rep_op) + +STATIC OP* S_is_inplace_av(pTHX_ OP* o, OP* oright) + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_IS_INPLACE_AV \ + assert(o) + +#endif 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, PerlIO *rsfp, bool new_filter); +PERL_CALLCONV bool Perl_lex_bufutf8(pTHX); +PERL_CALLCONV char* Perl_lex_grow_linestr(pTHX_ STRLEN len); +PERL_CALLCONV void Perl_lex_stuff_pvn(pTHX_ const char* pv, STRLEN len, U32 flags) + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_LEX_STUFF_PVN \ + assert(pv) + +PERL_CALLCONV void Perl_lex_stuff_sv(pTHX_ SV* sv, U32 flags) + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_LEX_STUFF_SV \ + assert(sv) + +PERL_CALLCONV void Perl_lex_unstuff(pTHX_ char* ptr) + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_LEX_UNSTUFF \ + assert(ptr) + +PERL_CALLCONV void Perl_lex_read_to(pTHX_ char* ptr) + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_LEX_READ_TO \ + assert(ptr) + +PERL_CALLCONV void Perl_lex_discard_to(pTHX_ char* ptr) + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_LEX_DISCARD_TO \ + assert(ptr) + +PERL_CALLCONV bool Perl_lex_next_chunk(pTHX_ U32 flags); +PERL_CALLCONV I32 Perl_lex_peek_unichar(pTHX_ U32 flags); +PERL_CALLCONV I32 Perl_lex_read_unichar(pTHX_ U32 flags); +PERL_CALLCONV void Perl_lex_read_space(pTHX_ U32 flags); PERL_CALLCONV void Perl_op_null(pTHX_ OP* o) __attribute__nonnull__(pTHX_1); #define PERL_ARGS_ASSERT_OP_NULL \ @@ -1437,7 +1593,7 @@ PERL_CALLCONV void Perl_op_clear(pTHX_ OP* o) PERL_CALLCONV void Perl_op_refcnt_lock(pTHX); PERL_CALLCONV void Perl_op_refcnt_unlock(pTHX); -#if defined(PERL_IN_OP_C) || defined(PERL_DECL_PROT) +#if defined(PERL_IN_OP_C) STATIC OP* S_linklist(pTHX_ OP *o) __attribute__nonnull__(pTHX_1); #define PERL_ARGS_ASSERT_LINKLIST \ @@ -1474,6 +1630,17 @@ PERL_CALLCONV UV Perl_grok_bin(pTHX_ const char* start, STRLEN* len_p, I32* flag #define PERL_ARGS_ASSERT_GROK_BIN \ assert(start); assert(len_p); assert(flags) +PERL_CALLCONV char Perl_grok_bslash_c(pTHX_ const char source, const bool output_warning) + __attribute__warn_unused_result__; + +PERL_CALLCONV char* Perl_grok_bslash_o(pTHX_ const char* s, UV* uv, STRLEN* len, const bool output_warning) + __attribute__warn_unused_result__ + __attribute__nonnull__(pTHX_1) + __attribute__nonnull__(pTHX_2) + __attribute__nonnull__(pTHX_3); +#define PERL_ARGS_ASSERT_GROK_BSLASH_O \ + assert(s); assert(uv); assert(len) + PERL_CALLCONV UV Perl_grok_hex(pTHX_ const char* start, STRLEN* len_p, I32* flags, NV *result) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2) @@ -1518,6 +1685,12 @@ PERL_CALLCONV int Perl_magic_clearhint(pTHX_ SV* sv, MAGIC* mg) #define PERL_ARGS_ASSERT_MAGIC_CLEARHINT \ assert(sv); assert(mg) +PERL_CALLCONV int Perl_magic_clearhints(pTHX_ SV* sv, MAGIC* mg) + __attribute__nonnull__(pTHX_1) + __attribute__nonnull__(pTHX_2); +#define PERL_ARGS_ASSERT_MAGIC_CLEARHINTS \ + assert(sv); assert(mg) + PERL_CALLCONV int Perl_magic_clearisa(pTHX_ SV* sv, MAGIC* mg) __attribute__nonnull__(pTHX_2); #define PERL_ARGS_ASSERT_MAGIC_CLEARISA \ @@ -1782,6 +1955,13 @@ PERL_CALLCONV int Perl_magic_wipepack(pTHX_ SV* sv, MAGIC* mg) #define PERL_ARGS_ASSERT_MAGIC_WIPEPACK \ assert(sv); assert(mg) +PERL_CALLCONV SV* Perl_magic_methcall(pTHX_ SV *sv, const MAGIC *mg, const char *meth, U32 flags, U32 argc, ...) + __attribute__nonnull__(pTHX_1) + __attribute__nonnull__(pTHX_2) + __attribute__nonnull__(pTHX_3); +#define PERL_ARGS_ASSERT_MAGIC_METHCALL \ + assert(sv); assert(mg); assert(meth) + PERL_CALLCONV void Perl_markstack_grow(pTHX); #if defined(USE_LOCALE_COLLATE) PERL_CALLCONV int Perl_magic_setcollxfrm(pTHX_ SV* sv, MAGIC* mg) @@ -1803,6 +1983,11 @@ PERL_CALLCONV SV* Perl_mess(pTHX_ const char* pat, ...) #define PERL_ARGS_ASSERT_MESS \ assert(pat) +PERL_CALLCONV SV* Perl_mess_sv(pTHX_ SV* basemsg, bool consume) + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_MESS_SV \ + assert(basemsg) + PERL_CALLCONV SV* Perl_vmess(pTHX_ const char* pat, va_list* args) __attribute__nonnull__(pTHX_1); #define PERL_ARGS_ASSERT_VMESS \ @@ -1915,7 +2100,8 @@ PERL_CALLCONV I32 Perl_my_fflush_all(pTHX); PERL_CALLCONV Pid_t Perl_my_fork(void); PERL_CALLCONV void Perl_atfork_lock(void); PERL_CALLCONV void Perl_atfork_unlock(void); -PERL_CALLCONV I32 Perl_my_lstat(pTHX); +/* PERL_CALLCONV I32 Perl_my_lstat(pTHX); */ +PERL_CALLCONV I32 Perl_my_lstat_flags(pTHX_ const U32 flags); #if !defined(HAS_MEMCMP) || !defined(HAS_SANE_MEMCMP) PERL_CALLCONV I32 Perl_my_memcmp(const char* s1, const char* s2, I32 len) __attribute__pure__ @@ -1946,7 +2132,8 @@ PERL_CALLCONV PerlIO* Perl_my_popen_list(pTHX_ const char* mode, int n, SV ** ar assert(mode); assert(args) PERL_CALLCONV void Perl_my_setenv(pTHX_ const char* nam, const char* val); -PERL_CALLCONV I32 Perl_my_stat(pTHX); +/* PERL_CALLCONV I32 Perl_my_stat(pTHX); */ +PERL_CALLCONV I32 Perl_my_stat_flags(pTHX_ const U32 flags); PERL_CALLCONV char * Perl_my_strftime(pTHX_ const char *fmt, int sec, int min, int hour, int mday, int mon, int year, int wday, int yday, int isdst) __attribute__nonnull__(pTHX_1); #define PERL_ARGS_ASSERT_MY_STRFTIME \ @@ -2122,9 +2309,9 @@ PERL_CALLCONV HV* Perl_newHVhv(pTHX_ HV *hv) __attribute__malloc__ __attribute__warn_unused_result__; -PERL_CALLCONV IO* Perl_newIO(pTHX) +/* PERL_CALLCONV IO* Perl_newIO(pTHX) __attribute__malloc__ - __attribute__warn_unused_result__; + __attribute__warn_unused_result__; */ PERL_CALLCONV OP* Perl_newLISTOP(pTHX_ I32 type, I32 flags, OP* first, OP* last) __attribute__malloc__ @@ -2271,6 +2458,11 @@ PERL_CALLCONV const char* Perl_scan_version(pTHX_ const char *s, SV *rv, bool qv #define PERL_ARGS_ASSERT_SCAN_VERSION \ assert(s); assert(rv) +PERL_CALLCONV const char* Perl_prescan_version(pTHX_ const char *s, bool strict, const char** errstr, bool *sqv, int *ssaw_decimal, int *swidth, bool *salpha) + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_PRESCAN_VERSION \ + assert(s) + PERL_CALLCONV SV* Perl_new_version(pTHX_ SV *ver) __attribute__nonnull__(pTHX_1); #define PERL_ARGS_ASSERT_NEW_VERSION \ @@ -2312,12 +2504,12 @@ PERL_CALLCONV PerlIO* Perl_nextargv(pTHX_ GV* gv) #define PERL_ARGS_ASSERT_NEXTARGV \ assert(gv) -PERL_CALLCONV char* Perl_ninstr(pTHX_ const char* big, const char* bigend, const char* little, const char* lend) +PERL_CALLCONV char* Perl_ninstr(const char* big, const char* bigend, const char* little, const char* lend) __attribute__pure__ - __attribute__nonnull__(pTHX_1) - __attribute__nonnull__(pTHX_2) - __attribute__nonnull__(pTHX_3) - __attribute__nonnull__(pTHX_4); + __attribute__nonnull__(1) + __attribute__nonnull__(2) + __attribute__nonnull__(3) + __attribute__nonnull__(4); #define PERL_ARGS_ASSERT_NINSTR \ assert(big); assert(bigend); assert(little); assert(lend) @@ -2335,19 +2527,27 @@ PERL_CALLCONV void Perl_package(pTHX_ OP* o) assert(o) #endif +PERL_CALLCONV void Perl_package_version(pTHX_ OP* v) + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_PACKAGE_VERSION \ + assert(v) + PERL_CALLCONV PADOFFSET Perl_pad_alloc(pTHX_ I32 optype, U32 tmptype); -PERL_CALLCONV PADOFFSET Perl_allocmy(pTHX_ const char *const name) +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 \ assert(name) -PERL_CALLCONV PADOFFSET Perl_pad_findmy(pTHX_ const char* name) +PERL_CALLCONV PADOFFSET Perl_pad_findmy(pTHX_ const char* name, STRLEN len, U32 flags) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); #define PERL_ARGS_ASSERT_PAD_FINDMY \ assert(name) -PERL_CALLCONV PADOFFSET Perl_find_rundefsvoffset(pTHX); +PERL_CALLCONV PADOFFSET Perl_find_rundefsvoffset(pTHX) + __attribute__deprecated__; + +PERL_CALLCONV SV* Perl_find_rundefsv(pTHX); PERL_CALLCONV OP* Perl_oopsAV(pTHX_ OP* o) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); @@ -2361,9 +2561,11 @@ PERL_CALLCONV OP* Perl_oopsHV(pTHX_ OP* o) assert(o) PERL_CALLCONV void Perl_pad_leavemy(pTHX); +#ifdef DEBUGGING PERL_CALLCONV SV* Perl_pad_sv(pTHX_ PADOFFSET po); +#endif PERL_CALLCONV void Perl_pad_free(pTHX_ PADOFFSET po); -#if defined(PERL_IN_PAD_C) || defined(PERL_DECL_PROT) +#if defined(PERL_IN_PAD_C) STATIC void S_pad_reset(pTHX); #endif PERL_CALLCONV void Perl_pad_swipe(pTHX_ PADOFFSET po, bool refadjust); @@ -2486,18 +2688,13 @@ PERL_CALLCONV void Perl_packlist(pTHX_ SV *cat, const char *pat, const char *pat #if defined(PERL_USES_PL_PIDSTATUS) && defined(PERL_IN_UTIL_C) STATIC void S_pidgone(pTHX_ Pid_t pid, int status); #endif -PERL_CALLCONV void Perl_pmflag(pTHX_ U32* pmfl, int ch) - __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_PMFLAG \ - assert(pmfl) - PERL_CALLCONV OP* Perl_pmruntime(pTHX_ OP *o, OP *expr, bool isreg) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); #define PERL_ARGS_ASSERT_PMRUNTIME \ assert(o); assert(expr) -#if defined(PERL_IN_OP_C) || defined(PERL_DECL_PROT) +#if defined(PERL_IN_OP_C) STATIC OP* S_pmtrans(pTHX_ OP* o, OP* expr, OP* repl) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2) @@ -2510,7 +2707,7 @@ PERL_CALLCONV void Perl_pop_scope(pTHX); PERL_CALLCONV OP* Perl_prepend_elem(pTHX_ I32 optype, OP* head, OP* tail); PERL_CALLCONV void Perl_push_scope(pTHX); /* PERL_CALLCONV OP* Perl_ref(pTHX_ OP* o, I32 type); */ -#if defined(PERL_IN_OP_C) || defined(PERL_DECL_PROT) +#if defined(PERL_IN_OP_C) STATIC OP* S_refkids(pTHX_ OP* o, I32 type); #endif PERL_CALLCONV void Perl_regdump(pTHX_ const regexp* r) @@ -2543,10 +2740,10 @@ PERL_CALLCONV void Perl_pregfree2(pTHX_ REGEXP *rx) #define PERL_ARGS_ASSERT_PREGFREE2 \ assert(rx) -PERL_CALLCONV REGEXP* Perl_reg_temp_copy(pTHX_ REGEXP* r) - __attribute__nonnull__(pTHX_1); +PERL_CALLCONV REGEXP* Perl_reg_temp_copy(pTHX_ REGEXP* ret_x, REGEXP* rx) + __attribute__nonnull__(pTHX_2); #define PERL_ARGS_ASSERT_REG_TEMP_COPY \ - assert(r) + assert(rx) PERL_CALLCONV void Perl_regfree_internal(pTHX_ REGEXP *const rx) __attribute__nonnull__(pTHX_1); @@ -2668,18 +2865,18 @@ PERL_CALLCONV void Perl_regprop(pTHX_ const regexp *prog, SV* sv, const regnode* #define PERL_ARGS_ASSERT_REGPROP \ assert(sv); assert(o) -PERL_CALLCONV void Perl_repeatcpy(pTHX_ char* to, const char* from, I32 len, I32 count) - __attribute__nonnull__(pTHX_1) - __attribute__nonnull__(pTHX_2); +PERL_CALLCONV void Perl_repeatcpy(char* to, const char* from, I32 len, I32 count) + __attribute__nonnull__(1) + __attribute__nonnull__(2); #define PERL_ARGS_ASSERT_REPEATCPY \ assert(to); assert(from) -PERL_CALLCONV char* Perl_rninstr(pTHX_ const char* big, const char* bigend, const char* little, const char* lend) +PERL_CALLCONV char* Perl_rninstr(const char* big, const char* bigend, const char* little, const char* lend) __attribute__pure__ - __attribute__nonnull__(pTHX_1) - __attribute__nonnull__(pTHX_2) - __attribute__nonnull__(pTHX_3) - __attribute__nonnull__(pTHX_4); + __attribute__nonnull__(1) + __attribute__nonnull__(2) + __attribute__nonnull__(3) + __attribute__nonnull__(4); #define PERL_ARGS_ASSERT_RNINSTR \ assert(big); assert(bigend); assert(little); assert(lend) @@ -2691,7 +2888,7 @@ PERL_CALLCONV int Perl_rsignal_save(pTHX_ int i, Sighandler_t t1, Sigsave_t* sav assert(save) PERL_CALLCONV Sighandler_t Perl_rsignal_state(pTHX_ int i); -#if defined(PERL_IN_PP_CTL_C) || defined(PERL_DECL_PROT) +#if defined(PERL_IN_PP_CTL_C) STATIC void S_rxres_free(pTHX_ void** rsp) __attribute__nonnull__(pTHX_1); #define PERL_ARGS_ASSERT_RXRES_FREE \ @@ -2746,10 +2943,14 @@ PERL_CALLCONV char* Perl_savesvpv(pTHX_ SV* sv) PERL_CALLCONV void Perl_savestack_grow(pTHX); PERL_CALLCONV void Perl_savestack_grow_cnt(pTHX_ I32 need); -PERL_CALLCONV void Perl_save_aelem(pTHX_ AV* av, I32 idx, SV **sptr) +/* PERL_CALLCONV void Perl_save_aelem(pTHX_ AV* av, I32 idx, SV **sptr) + __attribute__nonnull__(pTHX_1) + __attribute__nonnull__(pTHX_3); */ + +PERL_CALLCONV void Perl_save_aelem_flags(pTHX_ AV* av, I32 idx, SV **sptr, const U32 flags) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_3); -#define PERL_ARGS_ASSERT_SAVE_AELEM \ +#define PERL_ARGS_ASSERT_SAVE_AELEM_FLAGS \ assert(av); assert(sptr) PERL_CALLCONV I32 Perl_save_alloc(pTHX_ I32 size, I32 pad); @@ -2779,6 +2980,12 @@ PERL_CALLCONV void Perl_save_delete(pTHX_ HV *hv, char *key, I32 klen) #define PERL_ARGS_ASSERT_SAVE_DELETE \ assert(hv); assert(key) +PERL_CALLCONV void Perl_save_hdelete(pTHX_ HV *hv, SV *keysv) + __attribute__nonnull__(pTHX_1) + __attribute__nonnull__(pTHX_2); +#define PERL_ARGS_ASSERT_SAVE_HDELETE \ + assert(hv); assert(keysv) + PERL_CALLCONV void Perl_save_adelete(pTHX_ AV *av, I32 key) __attribute__nonnull__(pTHX_1); #define PERL_ARGS_ASSERT_SAVE_ADELETE \ @@ -2917,12 +3124,12 @@ PERL_CALLCONV SV* Perl_save_svref(pTHX_ SV** sptr) PERL_CALLCONV void Perl_save_pushptr(pTHX_ void *const ptr, const int type); PERL_CALLCONV void Perl_save_pushi32ptr(pTHX_ const I32 i, void *const ptr, const int type); PERL_CALLCONV void Perl_save_pushptrptr(pTHX_ void *const ptr1, void *const ptr2, const int type); -#if defined(PERL_IN_SCOPE_C) || defined(PERL_DECL_PROT) +#if defined(PERL_IN_SCOPE_C) STATIC void S_save_pushptri32ptr(pTHX_ void *const ptr1, const I32 i, void *const ptr2, const int type); #endif PERL_CALLCONV OP* Perl_sawparens(pTHX_ OP* o); PERL_CALLCONV OP* Perl_scalar(pTHX_ OP* o); -#if defined(PERL_IN_OP_C) || defined(PERL_DECL_PROT) +#if defined(PERL_IN_OP_C) STATIC OP* S_scalarkids(pTHX_ OP* o); STATIC OP* S_scalarseq(pTHX_ OP* o); #endif @@ -3004,7 +3211,7 @@ PERL_CALLCONV IO* Perl_sv_2io(pTHX_ SV *const sv) #define PERL_ARGS_ASSERT_SV_2IO \ assert(sv) -#if defined(PERL_IN_SV_C) || defined(PERL_DECL_PROT) +#if defined(PERL_IN_SV_C) STATIC bool S_glob_2number(pTHX_ GV* const gv) __attribute__nonnull__(pTHX_1); #define PERL_ARGS_ASSERT_GLOB_2NUMBER \ @@ -3014,7 +3221,7 @@ STATIC bool S_glob_2number(pTHX_ GV* const gv) /* PERL_CALLCONV IV Perl_sv_2iv(pTHX_ SV *sv); */ PERL_CALLCONV IV Perl_sv_2iv_flags(pTHX_ SV *const sv, const I32 flags); PERL_CALLCONV SV* Perl_sv_2mortal(pTHX_ SV *const sv); -PERL_CALLCONV NV Perl_sv_2nv(pTHX_ SV *const sv); +PERL_CALLCONV NV Perl_sv_2nv_flags(pTHX_ SV *const sv, const I32 flags); PERL_CALLCONV SV* Perl_sv_2num(pTHX_ SV *const sv) __attribute__nonnull__(pTHX_1); #define PERL_ARGS_ASSERT_SV_2NUM \ @@ -3073,7 +3280,7 @@ PERL_CALLCONV char* Perl_sv_pvbyten(pTHX_ SV *sv, STRLEN *lp) assert(sv); assert(lp) PERL_CALLCONV I32 Perl_sv_true(pTHX_ SV *const sv); -#if defined(PERL_IN_SV_C) || defined(PERL_DECL_PROT) +#if defined(PERL_IN_SV_C) STATIC void S_sv_add_arena(pTHX_ char *const ptr, const U32 size, const U32 flags) __attribute__nonnull__(pTHX_1); #define PERL_ARGS_ASSERT_SV_ADD_ARENA \ @@ -3156,6 +3363,7 @@ PERL_CALLCONV int Perl_getcwd_sv(pTHX_ SV* sv) assert(sv) PERL_CALLCONV void Perl_sv_dec(pTHX_ SV *const sv); +PERL_CALLCONV void Perl_sv_dec_nomg(pTHX_ SV *const sv); PERL_CALLCONV void Perl_sv_dump(pTHX_ SV* sv) __attribute__nonnull__(pTHX_1); #define PERL_ARGS_ASSERT_SV_DUMP \ @@ -3195,6 +3403,7 @@ PERL_CALLCONV char* Perl_sv_grow(pTHX_ SV *const sv, STRLEN newlen) assert(sv) PERL_CALLCONV void Perl_sv_inc(pTHX_ SV *const sv); +PERL_CALLCONV void Perl_sv_inc_nomg(pTHX_ SV *const sv); /* PERL_CALLCONV void Perl_sv_insert(pTHX_ SV *const bigstr, const STRLEN offset, const STRLEN len, const char *const little, const STRLEN littlelen) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_4); */ @@ -3239,6 +3448,11 @@ PERL_CALLCONV void Perl_sv_pos_u2b(pTHX_ SV *const sv, I32 *const offsetp, I32 * #define PERL_ARGS_ASSERT_SV_POS_U2B \ assert(offsetp) +PERL_CALLCONV STRLEN Perl_sv_pos_u2b_flags(pTHX_ SV *const sv, STRLEN uoffset, STRLEN *const lenp, U32 flags) + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_SV_POS_U2B_FLAGS \ + assert(sv) + PERL_CALLCONV void Perl_sv_pos_b2u(pTHX_ SV *const sv, I32 *const offsetp) __attribute__nonnull__(pTHX_2); #define PERL_ARGS_ASSERT_SV_POS_B2U \ @@ -3674,6 +3888,11 @@ PERL_CALLCONV UV Perl_get_hash_seed(pTHX) PERL_CALLCONV void Perl_report_evil_fh(pTHX_ const GV *gv, const IO *io, I32 op); PERL_CALLCONV void Perl_report_uninit(pTHX_ const SV *uninit_sv); +PERL_CALLCONV void Perl_warn_sv(pTHX_ SV *baseex) + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_WARN_SV \ + assert(baseex) + PERL_CALLCONV void Perl_warn(pTHX_ const char* pat, ...) __attribute__format__(__printf__,pTHX_1,pTHX_2) __attribute__nonnull__(pTHX_1); @@ -3691,6 +3910,18 @@ PERL_CALLCONV void Perl_warner(pTHX_ U32 err, const char* pat, ...) #define PERL_ARGS_ASSERT_WARNER \ assert(pat) +PERL_CALLCONV void Perl_ck_warner(pTHX_ U32 err, const char* pat, ...) + __attribute__format__(__printf__,pTHX_2,pTHX_3) + __attribute__nonnull__(pTHX_2); +#define PERL_ARGS_ASSERT_CK_WARNER \ + assert(pat) + +PERL_CALLCONV void Perl_ck_warner_d(pTHX_ U32 err, const char* pat, ...) + __attribute__format__(__printf__,pTHX_2,pTHX_3) + __attribute__nonnull__(pTHX_2); +#define PERL_ARGS_ASSERT_CK_WARNER_D \ + assert(pat) + PERL_CALLCONV void Perl_vwarner(pTHX_ U32 err, const char* pat, va_list* args) __attribute__nonnull__(pTHX_2); #define PERL_ARGS_ASSERT_VWARNER \ @@ -3706,10 +3937,10 @@ PERL_CALLCONV I32 Perl_whichsig(pTHX_ const char* sig) #define PERL_ARGS_ASSERT_WHICHSIG \ assert(sig) -PERL_CALLCONV void Perl_write_to_stderr(pTHX_ const char* message, int msglen) +PERL_CALLCONV void Perl_write_to_stderr(pTHX_ SV* msv) __attribute__nonnull__(pTHX_1); #define PERL_ARGS_ASSERT_WRITE_TO_STDERR \ - assert(message) + assert(msv) PERL_CALLCONV int Perl_yyerror(pTHX_ const char *const s) __attribute__nonnull__(pTHX_1); @@ -3723,7 +3954,7 @@ PERL_CALLCONV void Perl_parser_free(pTHX_ const yy_parser *parser) #define PERL_ARGS_ASSERT_PARSER_FREE \ assert(parser) -#if defined(PERL_IN_TOKE_C) || defined(PERL_DECL_PROT) +#if defined(PERL_IN_TOKE_C) STATIC int S_yywarn(pTHX_ const char *const s) __attribute__nonnull__(pTHX_1); #define PERL_ARGS_ASSERT_YYWARN \ @@ -4087,7 +4318,7 @@ PERL_CALLCONV MAGIC* Perl_mg_dup(pTHX_ MAGIC *mg, CLONE_PARAMS *const param) #define PERL_ARGS_ASSERT_MG_DUP \ assert(param) -#if defined(PERL_IN_SV_C) || defined(PERL_DECL_PROT) +#if defined(PERL_IN_SV_C) STATIC SV ** S_sv_dup_inc_multiple(pTHX_ SV *const *source, SV **dest, SSize_t items, CLONE_PARAMS *const param) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2) @@ -4096,12 +4327,27 @@ STATIC SV ** S_sv_dup_inc_multiple(pTHX_ SV *const *source, SV **dest, SSize_t i assert(source); assert(dest); assert(param) #endif +#if defined(PERL_IN_SV_C) +STATIC SV* S_sv_dup_common(pTHX_ const SV *const sstr, CLONE_PARAMS *const param) + __attribute__warn_unused_result__ + __attribute__nonnull__(pTHX_1) + __attribute__nonnull__(pTHX_2); +#define PERL_ARGS_ASSERT_SV_DUP_COMMON \ + assert(sstr); assert(param) + +#endif PERL_CALLCONV SV* Perl_sv_dup(pTHX_ const SV *const sstr, CLONE_PARAMS *const param) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_2); #define PERL_ARGS_ASSERT_SV_DUP \ assert(param) +PERL_CALLCONV SV* Perl_sv_dup_inc(pTHX_ const SV *const sstr, CLONE_PARAMS *const param) + __attribute__warn_unused_result__ + __attribute__nonnull__(pTHX_2); +#define PERL_ARGS_ASSERT_SV_DUP_INC \ + assert(param) + PERL_CALLCONV void Perl_rvpv_dup(pTHX_ SV *const dstr, const SV *const sstr, CLONE_PARAMS *const param) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2) @@ -4136,7 +4382,9 @@ PERL_CALLCONV void Perl_ptr_table_split(pTHX_ PTR_TBL_t *const tbl) #define PERL_ARGS_ASSERT_PTR_TABLE_SPLIT \ assert(tbl) -PERL_CALLCONV void Perl_ptr_table_clear(pTHX_ PTR_TBL_t *const tbl); +PERL_CALLCONV void Perl_ptr_table_clear(pTHX_ PTR_TBL_t *const tbl) + __attribute__deprecated__; + PERL_CALLCONV void Perl_ptr_table_free(pTHX_ PTR_TBL_t *const tbl); #if defined(USE_ITHREADS) # if defined(HAVE_INTERP_INTERN) @@ -4178,7 +4426,7 @@ PERL_CALLCONV int Perl_nothreadhook(pTHX); END_EXTERN_C -#if defined(PERL_IN_DOOP_C) || defined(PERL_DECL_PROT) +#if defined(PERL_IN_DOOP_C) STATIC I32 S_do_trans_simple(pTHX_ SV * const sv) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); @@ -4217,7 +4465,7 @@ STATIC I32 S_do_trans_complex_utf8(pTHX_ SV * const sv) #endif -#if defined(PERL_IN_GV_C) || defined(PERL_DECL_PROT) +#if defined(PERL_IN_GV_C) STATIC void S_gv_init_sv(pTHX_ GV *gv, const svtype sv_type) __attribute__nonnull__(pTHX_1); #define PERL_ARGS_ASSERT_GV_INIT_SV \ @@ -4238,12 +4486,12 @@ STATIC HV* S_require_tie_mod(pTHX_ GV *gv, const char *varpv, SV* namesv, const #endif -PERL_CALLCONV void* Perl_get_arena(pTHX_ const size_t svtype, const U32 misc) +PERL_CALLCONV void* Perl_get_arena(pTHX_ const size_t arenasize, const svtype bodytype) __attribute__malloc__ __attribute__warn_unused_result__; -#if defined(PERL_IN_HV_C) || defined(PERL_DECL_PROT) +#if defined(PERL_IN_HV_C) STATIC void S_hsplit(pTHX_ HV *hv) __attribute__nonnull__(pTHX_1); #define PERL_ARGS_ASSERT_HSPLIT \ @@ -4254,11 +4502,6 @@ STATIC void S_hfreeentries(pTHX_ HV *hv) #define PERL_ARGS_ASSERT_HFREEENTRIES \ assert(hv) -STATIC I32 S_anonymise_cv(pTHX_ HEK *stash, SV *val) - __attribute__nonnull__(pTHX_2); -#define PERL_ARGS_ASSERT_ANONYMISE_CV \ - assert(val) - STATIC HE* S_new_he(pTHX) __attribute__malloc__ __attribute__warn_unused_result__; @@ -4309,7 +4552,7 @@ STATIC SV * S_refcounted_he_value(pTHX_ const struct refcounted_he *he) #endif -#if defined(PERL_IN_MG_C) || defined(PERL_DECL_PROT) +#if defined(PERL_IN_MG_C) STATIC void S_save_magic(pTHX_ I32 mgs_ix, SV *sv) __attribute__nonnull__(pTHX_2); #define PERL_ARGS_ASSERT_SAVE_MAGIC \ @@ -4322,11 +4565,11 @@ STATIC int S_magic_methpack(pTHX_ SV *sv, const MAGIC *mg, const char *meth) #define PERL_ARGS_ASSERT_MAGIC_METHPACK \ assert(sv); assert(mg); assert(meth) -STATIC int S_magic_methcall(pTHX_ SV *sv, const MAGIC *mg, const char *meth, I32 f, int n, SV *val) +STATIC SV* S_magic_methcall1(pTHX_ SV *sv, const MAGIC *mg, const char *meth, U32 flags, int n, SV *val) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2) __attribute__nonnull__(pTHX_3); -#define PERL_ARGS_ASSERT_MAGIC_METHCALL \ +#define PERL_ARGS_ASSERT_MAGIC_METHCALL1 \ assert(sv); assert(mg); assert(meth) STATIC void S_restore_magic(pTHX_ const void *p); @@ -4338,7 +4581,7 @@ STATIC void S_unwind_handler_stack(pTHX_ const void *p) #endif -#if defined(PERL_IN_OP_C) || defined(PERL_DECL_PROT) +#if defined(PERL_IN_OP_C) PERL_CALLCONV OP* Perl_ck_anoncode(pTHX_ OP *o) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); @@ -4757,7 +5000,7 @@ STATIC void S_Slab_to_rw(pTHX_ void *op) # endif #endif -#if defined(PERL_IN_PERL_C) || defined(PERL_DECL_PROT) +#if defined(PERL_IN_PERL_C) STATIC void S_find_beginning(pTHX_ SV* linestr_sv, PerlIO *rsfp) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); @@ -4822,7 +5065,8 @@ STATIC SV * S_incpush_if_exists(pTHX_ AV *const av, SV *dir, SV *const stem) #endif -#if defined(PERL_IN_PP_C) || defined(PERL_DECL_PROT) +#if defined(PERL_IN_PP_C) +STATIC OP* S_do_delete_local(pTHX); STATIC SV* S_refto(pTHX_ SV* sv) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); @@ -4830,7 +5074,7 @@ STATIC SV* S_refto(pTHX_ SV* sv) assert(sv) #endif -#if defined(PERL_IN_PP_C) || defined(PERL_IN_PP_HOT_C) || defined(PERL_DECL_PROT) +#if defined(PERL_IN_PP_C) || defined(PERL_IN_PP_HOT_C) PERL_CALLCONV GV* Perl_softref2xv(pTHX_ SV *const sv, const char *const what, const svtype type, SV ***spp) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1) @@ -4841,7 +5085,7 @@ PERL_CALLCONV GV* Perl_softref2xv(pTHX_ SV *const sv, const char *const what, co #endif -#if defined(PERL_IN_PP_PACK_C) || defined(PERL_DECL_PROT) +#if defined(PERL_IN_PP_PACK_C) STATIC I32 S_unpack_rec(pTHX_ struct tempsym* symptr, const char *s, const char *strbeg, const char *strend, const char **new_s) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2) @@ -4925,7 +5169,7 @@ STATIC char * S_bytes_to_uni(const U8 *start, STRLEN len, char *dest) #endif -#if defined(PERL_IN_PP_CTL_C) || defined(PERL_DECL_PROT) +#if defined(PERL_IN_PP_CTL_C) STATIC OP* S_docatch(pTHX_ OP *o) __attribute__warn_unused_result__; @@ -5024,7 +5268,7 @@ STATIC void S_destroy_matcher(pTHX_ PMOP* matcher) STATIC OP* S_do_smartmatch(pTHX_ HV* seen_this, HV* seen_other); #endif -#if defined(PERL_IN_PP_HOT_C) || defined(PERL_DECL_PROT) +#if defined(PERL_IN_PP_HOT_C) STATIC void S_do_oddball(pTHX_ HV *hash, SV **relem, SV **firstrelem) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2) @@ -5040,7 +5284,7 @@ STATIC SV* S_method_common(pTHX_ SV* meth, U32* hashp) #endif -#if defined(PERL_IN_PP_SORT_C) || defined(PERL_DECL_PROT) +#if defined(PERL_IN_PP_SORT_C) STATIC I32 S_sv_ncmp(pTHX_ SV *const a, SV *const b) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); @@ -5102,7 +5346,7 @@ STATIC void S_qsortsvu(pTHX_ SV** array, size_t num_elts, SVCOMPARE_t compare) #endif -#if defined(PERL_IN_PP_SYS_C) || defined(PERL_DECL_PROT) +#if defined(PERL_IN_PP_SYS_C) STATIC OP* S_doform(pTHX_ CV *cv, GV *gv, OP *retop) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2) @@ -5124,9 +5368,17 @@ STATIC SV * S_space_join_names_mortal(pTHX_ char *const *array) #define PERL_ARGS_ASSERT_SPACE_JOIN_NAMES_MORTAL \ assert(array) +STATIC OP * S_tied_handle_method(pTHX_ const char *const methname, SV **sp, IO *const io, MAGIC *const mg, const U32 flags, ...) + __attribute__nonnull__(pTHX_1) + __attribute__nonnull__(pTHX_2) + __attribute__nonnull__(pTHX_3) + __attribute__nonnull__(pTHX_4); +#define PERL_ARGS_ASSERT_TIED_HANDLE_METHOD \ + assert(methname); assert(sp); assert(io); assert(mg) + #endif -#if defined(PERL_IN_REGCOMP_C) || defined(PERL_DECL_PROT) +#if defined(PERL_IN_REGCOMP_C) STATIC regnode* S_reg(pTHX_ struct RExC_state_t *pRExC_state, I32 paren, I32 *flagp, U32 depth) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_3); @@ -5161,12 +5413,6 @@ STATIC regnode* S_regclass(pTHX_ struct RExC_state_t *pRExC_state, U32 depth) #define PERL_ARGS_ASSERT_REGCLASS \ assert(pRExC_state) -STATIC I32 S_regcurly(const char *s) - __attribute__warn_unused_result__ - __attribute__nonnull__(1); -#define PERL_ARGS_ASSERT_REGCURLY \ - assert(s) - STATIC regnode* S_reg_node(pTHX_ struct RExC_state_t *pRExC_state, U8 op) __attribute__nonnull__(pTHX_1); #define PERL_ARGS_ASSERT_REG_NODE \ @@ -5366,7 +5612,7 @@ STATIC U8 S_regtail_study(pTHX_ struct RExC_state_t *pRExC_state, regnode *p, co # endif #endif -#if defined(PERL_IN_REGEXEC_C) || defined(PERL_DECL_PROT) +#if defined(PERL_IN_REGEXEC_C) STATIC I32 S_regmatch(pTHX_ regmatch_info *reginfo, regnode *prog) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1) @@ -5434,11 +5680,6 @@ STATIC char* S_find_byclass(pTHX_ regexp * prog, const regnode *c, char *s, cons #define PERL_ARGS_ASSERT_FIND_BYCLASS \ assert(prog); assert(c); assert(s); assert(strend) -STATIC void S_swap_match_buff(pTHX_ regexp * prog) - __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_SWAP_MATCH_BUFF \ - assert(prog) - STATIC void S_to_utf8_substr(pTHX_ regexp * prog) __attribute__nonnull__(pTHX_1); #define PERL_ARGS_ASSERT_TO_UTF8_SUBSTR \ @@ -5477,7 +5718,7 @@ STATIC void S_debug_start_match(pTHX_ const REGEXP *prog, const bool do_utf8, co # endif #endif -#if defined(PERL_IN_DUMP_C) || defined(PERL_DECL_PROT) +#if defined(PERL_IN_DUMP_C) STATIC CV* S_deb_curcv(pTHX_ const I32 ix); STATIC void S_debprof(pTHX_ const OP *o) __attribute__nonnull__(pTHX_1); @@ -5494,7 +5735,7 @@ STATIC SV* S_pm_description(pTHX_ const PMOP *pm) #endif -#if defined(PERL_IN_SCOPE_C) || defined(PERL_DECL_PROT) +#if defined(PERL_IN_SCOPE_C) STATIC SV* S_save_scalar_at(pTHX_ SV **sptr, const U32 flags) __attribute__nonnull__(pTHX_1); #define PERL_ARGS_ASSERT_SAVE_SCALAR_AT \ @@ -5502,7 +5743,7 @@ STATIC SV* S_save_scalar_at(pTHX_ SV **sptr, const U32 flags) #endif -#if defined(PERL_IN_GV_C) || defined(PERL_IN_SV_C) || defined(PERL_IN_PAD_C) || defined(PERL_DECL_PROT) +#if defined(PERL_IN_GV_C) || defined(PERL_IN_SV_C) || defined(PERL_IN_PAD_C) || defined(PERL_IN_OP_C) PERL_CALLCONV void Perl_sv_add_backref(pTHX_ SV *const tsv, SV *const sv) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); @@ -5511,7 +5752,7 @@ PERL_CALLCONV void Perl_sv_add_backref(pTHX_ SV *const tsv, SV *const sv) #endif -#if defined(PERL_IN_HV_C) || defined(PERL_IN_MG_C) || defined(PERL_IN_SV_C) || defined(PERL_DECL_PROT) +#if defined(PERL_IN_HV_C) || defined(PERL_IN_MG_C) || defined(PERL_IN_SV_C) PERL_CALLCONV int Perl_sv_kill_backrefs(pTHX_ SV *const sv, AV *const av) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); @@ -5520,7 +5761,13 @@ PERL_CALLCONV int Perl_sv_kill_backrefs(pTHX_ SV *const sv, AV *const av) #endif -#if defined(PERL_IN_SV_C) || defined(PERL_DECL_PROT) +PERL_CALLCONV void Perl_sv_del_backref(pTHX_ SV *const tsv, SV *const sv) + __attribute__nonnull__(pTHX_1) + __attribute__nonnull__(pTHX_2); +#define PERL_ARGS_ASSERT_SV_DEL_BACKREF \ + assert(tsv); assert(sv) + +#if defined(PERL_IN_SV_C) STATIC char * S_uiv_2buf(char *const buf, const IV iv, UV uv, const int is_uv, char **const peob) __attribute__warn_unused_result__ __attribute__nonnull__(1) @@ -5543,12 +5790,6 @@ STATIC I32 S_visit(pTHX_ SVFUNC_t f, const U32 flags, const U32 mask) #define PERL_ARGS_ASSERT_VISIT \ assert(f) -STATIC void S_sv_del_backref(pTHX_ SV *const tsv, SV *const sv) - __attribute__nonnull__(pTHX_1) - __attribute__nonnull__(pTHX_2); -#define PERL_ARGS_ASSERT_SV_DEL_BACKREF \ - assert(tsv); assert(sv) - STATIC SV * S_varname(pTHX_ const GV *const gv, const char gvtype, PADOFFSET targ, const SV *const keyname, I32 aindex, int subscript_type) __attribute__warn_unused_result__; @@ -5581,19 +5822,21 @@ STATIC I32 S_expect_number(pTHX_ char **const pattern) assert(pattern) # -STATIC STRLEN S_sv_pos_u2b_forwards(const U8 *const start, const U8 *const send, STRLEN uoffset) +STATIC STRLEN S_sv_pos_u2b_forwards(const U8 *const start, const U8 *const send, STRLEN *const uoffset, bool *const at_end) __attribute__nonnull__(1) - __attribute__nonnull__(2); + __attribute__nonnull__(2) + __attribute__nonnull__(3) + __attribute__nonnull__(4); #define PERL_ARGS_ASSERT_SV_POS_U2B_FORWARDS \ - assert(start); assert(send) + assert(start); assert(send); assert(uoffset); assert(at_end) -STATIC STRLEN S_sv_pos_u2b_midway(const U8 *const start, const U8 *send, const STRLEN uoffset, const STRLEN uend) +STATIC STRLEN S_sv_pos_u2b_midway(const U8 *const start, const U8 *send, STRLEN uoffset, const STRLEN uend) __attribute__nonnull__(1) __attribute__nonnull__(2); #define PERL_ARGS_ASSERT_SV_POS_U2B_MIDWAY \ assert(start); assert(send) -STATIC STRLEN S_sv_pos_u2b_cached(pTHX_ SV *const sv, MAGIC **const mgp, const U8 *const start, const U8 *const send, const STRLEN uoffset, STRLEN uoffset0, STRLEN boffset0) +STATIC STRLEN S_sv_pos_u2b_cached(pTHX_ SV *const sv, MAGIC **const mgp, const U8 *const start, const U8 *const send, STRLEN uoffset, STRLEN uoffset0, STRLEN boffset0) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2) __attribute__nonnull__(pTHX_3) @@ -5601,6 +5844,12 @@ STATIC STRLEN S_sv_pos_u2b_cached(pTHX_ SV *const sv, MAGIC **const mgp, const U #define PERL_ARGS_ASSERT_SV_POS_U2B_CACHED \ assert(sv); assert(mgp); assert(start); assert(send) +STATIC void S_utf8_mg_len_cache_update(pTHX_ SV *const sv, MAGIC **const mgp, const STRLEN ulen) + __attribute__nonnull__(pTHX_1) + __attribute__nonnull__(pTHX_2); +#define PERL_ARGS_ASSERT_UTF8_MG_LEN_CACHE_UPDATE \ + assert(sv); assert(mgp) + STATIC void S_utf8_mg_pos_cache_update(pTHX_ SV *const sv, MAGIC **const mgp, const STRLEN byte, const STRLEN utf8, const STRLEN blen) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); @@ -5614,6 +5863,12 @@ STATIC STRLEN S_sv_pos_b2u_midway(pTHX_ const U8 *const s, const U8 *const targe #define PERL_ARGS_ASSERT_SV_POS_B2U_MIDWAY \ assert(s); assert(target); assert(end) +STATIC void S_assert_uft8_cache_coherent(pTHX_ const char *const func, STRLEN from_cache, STRLEN real, SV *const sv) + __attribute__nonnull__(pTHX_1) + __attribute__nonnull__(pTHX_4); +#define PERL_ARGS_ASSERT_ASSERT_UFT8_CACHE_COHERENT \ + assert(func); assert(sv) + STATIC char * S_F0convert(NV nv, char *const endbuf, STRLEN *const len) __attribute__nonnull__(2) __attribute__nonnull__(3); @@ -5654,9 +5909,15 @@ STATIC PTR_TBL_ENT_t * S_ptr_table_find(PTR_TBL_t *const tbl, const void *const #define PERL_ARGS_ASSERT_PTR_TABLE_FIND \ assert(tbl) +STATIC void S_anonymise_cv_maybe(pTHX_ GV *gv, CV *cv) + __attribute__nonnull__(pTHX_1) + __attribute__nonnull__(pTHX_2); +#define PERL_ARGS_ASSERT_ANONYMISE_CV_MAYBE \ + assert(gv); assert(cv) + #endif -#if defined(PERL_IN_TOKE_C) || defined(PERL_DECL_PROT) +#if defined(PERL_IN_TOKE_C) STATIC void S_check_uni(pTHX); STATIC void S_force_next(pTHX_ I32 type); STATIC char* S_force_version(pTHX_ char *s, int guessing) @@ -5664,6 +5925,11 @@ STATIC char* S_force_version(pTHX_ char *s, int guessing) #define PERL_ARGS_ASSERT_FORCE_VERSION \ assert(s) +STATIC char* S_force_strict_version(pTHX_ char *s) + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_FORCE_STRICT_VERSION \ + assert(s) + STATIC char* S_force_word(pTHX_ char *start, int token, int check_keyword, int allow_pack, int allow_tick) __attribute__nonnull__(pTHX_1); #define PERL_ARGS_ASSERT_FORCE_WORD \ @@ -5750,6 +6016,18 @@ STATIC char* S_swallow_bom(pTHX_ U8 *s) #define PERL_ARGS_ASSERT_SWALLOW_BOM \ assert(s) +#ifndef PERL_NO_UTF16_FILTER +STATIC I32 S_utf16_textfilter(pTHX_ int idx, SV *sv, int maxlen) + __attribute__nonnull__(pTHX_2); +#define PERL_ARGS_ASSERT_UTF16_TEXTFILTER \ + assert(sv) + +STATIC U8* S_add_utf16_textfilter(pTHX_ U8 *const s, bool reversed) + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_ADD_UTF16_TEXTFILTER \ + assert(s) + +#endif STATIC void S_checkcomma(pTHX_ const char *s, const char *name, const char *what) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2) @@ -5804,12 +6082,11 @@ STATIC I32 S_sublex_push(pTHX) STATIC I32 S_sublex_start(pTHX) __attribute__warn_unused_result__; -STATIC char * S_filter_gets(pTHX_ SV *sv, PerlIO *fp, STRLEN append) +STATIC char * S_filter_gets(pTHX_ SV *sv, STRLEN append) __attribute__warn_unused_result__ - __attribute__nonnull__(pTHX_1) - __attribute__nonnull__(pTHX_2); + __attribute__nonnull__(pTHX_1); #define PERL_ARGS_ASSERT_FILTER_GETS \ - assert(sv); assert(fp) + assert(sv) STATIC HV * S_find_in_my_stash(pTHX_ const char *pkgname, STRLEN len) __attribute__warn_unused_result__ @@ -5829,6 +6106,7 @@ STATIC SV* S_new_constant(pTHX_ const char *s, STRLEN len, const char *key, STRL #define PERL_ARGS_ASSERT_NEW_CONSTANT \ assert(key); assert(sv) +STATIC int S_deprecate_commaless_var_list(pTHX); STATIC int S_ao(pTHX_ int toketype); # if defined(PERL_CR_FILTER) STATIC I32 S_cr_textfilter(pTHX_ int idx, SV *sv, int maxlen); @@ -5853,7 +6131,7 @@ STATIC void S_printbuf(pTHX_ const char *const fmt, const char *const s) # endif #endif -#if defined(PERL_IN_UNIVERSAL_C) || defined(PERL_DECL_PROT) +#if defined(PERL_IN_UNIVERSAL_C) STATIC bool S_isa_lookup(pTHX_ HV *stash, const char * const name) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); @@ -5867,7 +6145,7 @@ STATIC HV * S_get_isa_hash(pTHX_ HV *const stash) #endif -#if defined(PERL_IN_LOCALE_C) || defined(PERL_DECL_PROT) +#if defined(PERL_IN_LOCALE_C) #if defined(USE_LOCALE_NUMERIC) || defined(USE_LOCALE_COLLATE) STATIC char* S_stdize_locale(pTHX_ char* locs) __attribute__nonnull__(pTHX_1); @@ -5877,15 +6155,19 @@ STATIC char* S_stdize_locale(pTHX_ char* locs) #endif #endif -#if defined(PERL_IN_UTIL_C) || defined(PERL_DECL_PROT) +#if defined(PERL_IN_UTIL_C) STATIC const COP* S_closest_cop(pTHX_ const COP *cop, const OP *o) __attribute__nonnull__(pTHX_1); #define PERL_ARGS_ASSERT_CLOSEST_COP \ assert(cop) STATIC SV* S_mess_alloc(pTHX); -STATIC const char * S_vdie_croak_common(pTHX_ const char *pat, va_list *args, STRLEN *msglen, I32* utf8); -STATIC bool S_vdie_common(pTHX_ const char *message, STRLEN msglen, I32 utf8, bool warn); +STATIC SV * S_with_queued_errors(pTHX_ SV *ex) + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_WITH_QUEUED_ERRORS \ + assert(ex) + +STATIC bool S_invoke_exception_hook(pTHX_ SV *ex, bool warn); STATIC char * S_write_no_mem(pTHX) __attribute__noreturn__; @@ -5900,11 +6182,11 @@ STATIC void S_mem_log_common(enum mem_log_type mlt, const UV n, const UV typesiz #endif #endif -#if defined(PERL_IN_NUMERIC_C) || defined(PERL_DECL_PROT) +#if defined(PERL_IN_NUMERIC_C) STATIC NV S_mulexp10(NV value, I32 exponent); #endif -#if defined(PERL_IN_UTF8_C) || defined(PERL_DECL_PROT) +#if defined(PERL_IN_UTF8_C) STATIC STRLEN S_is_utf8_char_slow(const U8 *s, const STRLEN len) __attribute__warn_unused_result__ __attribute__nonnull__(1); @@ -6032,7 +6314,7 @@ PERL_CALLCONV PerlIO * Perl_PerlIO_stderr(pTHX) #endif /* PERLIO_LAYERS */ PERL_CALLCONV void Perl_deb_stack_all(pTHX); -#if defined(PERL_IN_DEB_C) || defined(PERL_DECL_PROT) +#if defined(PERL_IN_DEB_C) STATIC void S_deb_stack_n(pTHX_ SV** stack_base, I32 stack_min, I32 stack_max, I32 mark_min, I32 mark_max) __attribute__nonnull__(pTHX_1); #define PERL_ARGS_ASSERT_DEB_STACK_N \ @@ -6049,7 +6331,7 @@ PERL_CALLCONV void Perl_pad_undef(pTHX_ CV* cv) #define PERL_ARGS_ASSERT_PAD_UNDEF \ assert(cv) -PERL_CALLCONV PADOFFSET Perl_pad_add_name(pTHX_ const char *name, HV* typestash, HV* ourstash, bool clone, bool state) +PERL_CALLCONV PADOFFSET Perl_pad_add_name(pTHX_ const char *name, const STRLEN len, const U32 flags, HV *typestash, HV *ourstash) __attribute__nonnull__(pTHX_1); #define PERL_ARGS_ASSERT_PAD_ADD_NAME \ assert(name) @@ -6059,12 +6341,13 @@ PERL_CALLCONV PADOFFSET Perl_pad_add_anon(pTHX_ SV* sv, OPCODE op_type) #define PERL_ARGS_ASSERT_PAD_ADD_ANON \ assert(sv) -PERL_CALLCONV void Perl_pad_check_dup(pTHX_ const char* name, bool is_our, const HV* ourstash) - __attribute__nonnull__(pTHX_1) - __attribute__nonnull__(pTHX_3); +#if defined(PERL_IN_PAD_C) +STATIC void S_pad_check_dup(pTHX_ SV *name, const U32 flags, const HV *ourstash) + __attribute__nonnull__(pTHX_1); #define PERL_ARGS_ASSERT_PAD_CHECK_DUP \ - assert(name); assert(ourstash) + assert(name) +#endif #ifdef DEBUGGING PERL_CALLCONV void Perl_pad_setsv(pTHX_ PADOFFSET po, SV* sv) __attribute__nonnull__(pTHX_2); @@ -6095,8 +6378,16 @@ PERL_CALLCONV void Perl_pad_push(pTHX_ PADLIST *padlist, int depth) PERL_CALLCONV HV* Perl_pad_compname_type(pTHX_ const PADOFFSET po) __attribute__warn_unused_result__; +#if defined(USE_ITHREADS) +PERL_CALLCONV AV* Perl_padlist_dup(pTHX_ AV *const srcpad, CLONE_PARAMS *const param) + __attribute__warn_unused_result__ + __attribute__nonnull__(pTHX_2); +#define PERL_ARGS_ASSERT_PADLIST_DUP \ + assert(param) + +#endif -#if defined(PERL_IN_PAD_C) || defined(PERL_DECL_PROT) +#if defined(PERL_IN_PAD_C) STATIC PADOFFSET S_pad_findlex(pTHX_ const char *name, const CV* cv, U32 seq, int warn, SV** out_capture, SV** out_name_sv, int *out_flags) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2) @@ -6105,6 +6396,11 @@ STATIC PADOFFSET S_pad_findlex(pTHX_ const char *name, const CV* cv, U32 seq, in #define PERL_ARGS_ASSERT_PAD_FINDLEX \ assert(name); assert(cv); assert(out_name_sv); assert(out_flags) +STATIC PADOFFSET S_pad_add_name_sv(pTHX_ SV *namesv, const U32 flags, HV *typestash, HV *ourstash) + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_PAD_ADD_NAME_SV \ + assert(namesv) + # if defined(DEBUGGING) STATIC void S_cv_dump(pTHX_ const CV *cv, const char *title) __attribute__nonnull__(pTHX_1) @@ -6131,11 +6427,13 @@ PERL_CALLCONV void Perl_save_set_svflags(pTHX_ SV *sv, U32 mask, U32 val) #define PERL_ARGS_ASSERT_SAVE_SET_SVFLAGS \ assert(sv) +#ifdef DEBUGGING PERL_CALLCONV void Perl_hv_assert(pTHX_ HV *hv) __attribute__nonnull__(pTHX_1); #define PERL_ARGS_ASSERT_HV_ASSERT \ assert(hv) +#endif PERL_CALLCONV SV* Perl_hv_scalar(pTHX_ HV *hv) __attribute__warn_unused_result__ @@ -6175,13 +6473,6 @@ PERL_CALLCONV AV** Perl_hv_backreferences_p(pTHX_ HV *hv) #define PERL_ARGS_ASSERT_HV_BACKREFERENCES_P \ assert(hv) -#if defined(PERL_IN_DUMP_C) || defined(PERL_IN_HV_C) || defined(PERL_IN_SV_C) || defined(PERL_DECL_PROT) -PERL_CALLCONV void Perl_hv_kill_backrefs(pTHX_ HV *hv) - __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_HV_KILL_BACKREFS \ - assert(hv) - -#endif PERL_CALLCONV void Perl_hv_clear_placeholders(pTHX_ HV *hv) __attribute__nonnull__(pTHX_1); #define PERL_ARGS_ASSERT_HV_CLEAR_PLACEHOLDERS \ @@ -6212,7 +6503,7 @@ PERL_CALLCONV SV* Perl_magic_scalarpack(pTHX_ HV *hv, MAGIC *mg) assert(hv); assert(mg) -#if defined(PERL_IN_SV_C) || defined(PERL_DECL_PROT) +#if defined(PERL_IN_SV_C) STATIC SV * S_find_hash_subscript(pTHX_ const HV *const hv, const SV *const val) __attribute__nonnull__(pTHX_2); #define PERL_ARGS_ASSERT_FIND_HASH_SUBSCRIPT \ @@ -6340,11 +6631,10 @@ PERL_CALLCONV void Perl_dump_sv_child(pTHX_ SV *sv) #endif #ifdef PERL_DONT_CREATE_GVSV -PERL_CALLCONV GV* Perl_gv_SVadd(pTHX_ GV* gv) - __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_GV_SVADD \ - assert(gv) - +/* PERL_CALLCONV GV* Perl_gv_SVadd(pTHX_ GV *gv); */ +#endif +#if defined(PERL_IN_UTIL_C) +STATIC bool S_ckwarn_common(pTHX_ U32 w); #endif PERL_CALLCONV bool Perl_ckwarn(pTHX_ U32 w); PERL_CALLCONV bool Perl_ckwarn_d(pTHX_ U32 w); @@ -6422,7 +6712,7 @@ PERL_CALLCONV void Perl_pad_peg(const char* s) #define PERL_ARGS_ASSERT_PAD_PEG \ assert(s) -#if defined(PERL_IN_DUMP_C) || defined(PERL_DECL_PROT) +#if defined(PERL_IN_DUMP_C) STATIC void S_xmldump_attr(pTHX_ I32 level, PerlIO *file, const char* pat, ...) __attribute__format__(__printf__,pTHX_3,pTHX_4) __attribute__nonnull__(pTHX_2) @@ -6445,16 +6735,27 @@ PERL_CALLCONV void Perl_xmldump_vindent(pTHX_ I32 level, PerlIO *file, const cha assert(file); assert(pat) PERL_CALLCONV void Perl_xmldump_all(pTHX); +PERL_CALLCONV void Perl_xmldump_all_perl(pTHX_ bool justperl); PERL_CALLCONV void Perl_xmldump_packsubs(pTHX_ const HV* stash) __attribute__nonnull__(pTHX_1); #define PERL_ARGS_ASSERT_XMLDUMP_PACKSUBS \ assert(stash) +PERL_CALLCONV void Perl_xmldump_packsubs_perl(pTHX_ const HV* stash, bool justperl) + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_XMLDUMP_PACKSUBS_PERL \ + assert(stash) + PERL_CALLCONV void Perl_xmldump_sub(pTHX_ const GV* gv) __attribute__nonnull__(pTHX_1); #define PERL_ARGS_ASSERT_XMLDUMP_SUB \ assert(gv) +PERL_CALLCONV void Perl_xmldump_sub_perl(pTHX_ const GV* gv, bool justperl) + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_XMLDUMP_SUB_PERL \ + assert(gv) + PERL_CALLCONV void Perl_xmldump_form(pTHX_ const GV* gv) __attribute__nonnull__(pTHX_1); #define PERL_ARGS_ASSERT_XMLDUMP_FORM \ @@ -6516,10 +6817,10 @@ PERL_CALLCONV MADPROP* Perl_newMADsv(pTHX_ char key, SV* sv) #define PERL_ARGS_ASSERT_NEWMADSV \ assert(sv) -PERL_CALLCONV MADPROP* Perl_newMADPROP(pTHX_ char key, char type, const void* val, I32 vlen); +PERL_CALLCONV MADPROP* Perl_newMADPROP(pTHX_ char key, char type, void* val, I32 vlen); PERL_CALLCONV void Perl_mad_free(pTHX_ MADPROP* mp); -# if defined(PERL_IN_TOKE_C) || defined(PERL_DECL_PROT) +# if defined(PERL_IN_TOKE_C) STATIC char* S_skipspace0(pTHX_ char *s) __attribute__nonnull__(pTHX_1); #define PERL_ARGS_ASSERT_SKIPSPACE0 \ @@ -6602,7 +6903,7 @@ PERL_CALLCONV AV* Perl_mro_get_linear_isa(pTHX_ HV* stash) #define PERL_ARGS_ASSERT_MRO_GET_LINEAR_ISA \ assert(stash) -#if defined(PERL_IN_MRO_C) || defined(PERL_DECL_PROT) +#if defined(PERL_IN_MRO_C) STATIC AV* S_mro_get_linear_isa_dfs(pTHX_ HV* stash, U32 level) __attribute__nonnull__(pTHX_1); #define PERL_ARGS_ASSERT_MRO_GET_LINEAR_ISA_DFS \ @@ -6641,6 +6942,35 @@ PERL_CALLCONV struct refcounted_he * Perl_store_cop_label(pTHX_ struct refcounte assert(label) +PERL_CALLCONV int Perl_keyword_plugin_standard(pTHX_ char* keyword_ptr, STRLEN keyword_len, OP** op_ptr) + __attribute__nonnull__(pTHX_1) + __attribute__nonnull__(pTHX_3); +#define PERL_ARGS_ASSERT_KEYWORD_PLUGIN_STANDARD \ + assert(keyword_ptr); assert(op_ptr) + + +#if defined(USE_ITHREADS) +# if defined(PERL_IN_SV_C) +STATIC void S_unreferenced_to_tmp_stack(pTHX_ AV *const unreferenced) + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_UNREFERENCED_TO_TMP_STACK \ + assert(unreferenced) + +# endif +PERL_CALLCONV CLONE_PARAMS * Perl_clone_params_new(PerlInterpreter *const from, PerlInterpreter *const to) + __attribute__malloc__ + __attribute__warn_unused_result__ + __attribute__nonnull__(1) + __attribute__nonnull__(2); +#define PERL_ARGS_ASSERT_CLONE_PARAMS_NEW \ + assert(from); assert(to) + +PERL_CALLCONV void Perl_clone_params_del(CLONE_PARAMS *param) + __attribute__nonnull__(1); +#define PERL_ARGS_ASSERT_CLONE_PARAMS_DEL \ + assert(param) + +#endif END_EXTERN_C /* * ex: set ts=8 sts=4 sw=4 noet: