X-Git-Url: https://perl5.git.perl.org/perl5.git/blobdiff_plain/4f58fed66d9db68b8f40235b5d930c67f7aff64e..1a1e8f7d433e70884ebe2651b04785ff7f5161ad:/proto.h diff --git a/proto.h b/proto.h index 9699ccc..b2e9e90 100644 --- a/proto.h +++ b/proto.h @@ -3,7 +3,7 @@ * proto.h * * Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, - * 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, by Larry Wall and others + * 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, by Larry Wall and others * * You may distribute under the terms of either the GNU General Public * License or the Artistic License, as specified in the README file. @@ -131,7 +131,7 @@ PERL_CALLCONV SV* Perl_amagic_call(pTHX_ SV* left, SV* right, int method, int di #define PERL_ARGS_ASSERT_AMAGIC_CALL \ assert(left); assert(right) -PERL_CALLCONV bool Perl_Gv_AMupdate(pTHX_ HV* stash) +PERL_CALLCONV int Perl_Gv_AMupdate(pTHX_ HV* stash, bool destructing) __attribute__nonnull__(pTHX_1); #define PERL_ARGS_ASSERT_GV_AMUPDATE \ assert(stash) @@ -175,12 +175,6 @@ PERL_CALLCONV void Perl_av_extend(pTHX_ AV *av, I32 key) #define PERL_ARGS_ASSERT_AV_EXTEND \ assert(av) -PERL_CALLCONV AV* Perl_av_fake(pTHX_ I32 size, SV **strp) - __attribute__warn_unused_result__ - __attribute__nonnull__(pTHX_2); -#define PERL_ARGS_ASSERT_AV_FAKE \ - assert(strp) - PERL_CALLCONV SV** Perl_av_fetch(pTHX_ AV *av, I32 key, I32 lval) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); @@ -192,7 +186,7 @@ PERL_CALLCONV void Perl_av_fill(pTHX_ AV *av, I32 fill) #define PERL_ARGS_ASSERT_AV_FILL \ assert(av) -PERL_CALLCONV I32 Perl_av_len(pTHX_ const AV *av) +PERL_CALLCONV I32 Perl_av_len(pTHX_ AV *av) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); #define PERL_ARGS_ASSERT_AV_LEN \ @@ -327,6 +321,14 @@ 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_xs_usage(pTHX_ const CV *const cv, const char *const params) + __attribute__noreturn__ + __attribute__nonnull__(pTHX_1) + __attribute__nonnull__(pTHX_2); +#define PERL_ARGS_ASSERT_CROAK_XS_USAGE \ + assert(cv); assert(params) + + #if defined(PERL_IMPLICIT_CONTEXT) PERL_CALLCONV void Perl_croak_nocontext(const char* pat, ...) __attribute__noreturn__ @@ -421,11 +423,6 @@ PERL_CALLCONV int Perl_printf_nocontext(const char *format, ...) assert(format) #endif -PERL_CALLCONV void Perl_cv_ckproto(pTHX_ const CV* cv, const GV* gv, const char* p) - __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_CV_CKPROTO \ - assert(cv) - PERL_CALLCONV void Perl_cv_ckproto_len(pTHX_ const CV* cv, const GV* gv, const char* p, const STRLEN len) __attribute__nonnull__(pTHX_1); #define PERL_ARGS_ASSERT_CV_CKPROTO_LEN \ @@ -442,7 +439,7 @@ PERL_CALLCONV SV* Perl_gv_const_sv(pTHX_ GV* gv) #define PERL_ARGS_ASSERT_GV_CONST_SV \ assert(gv) -PERL_CALLCONV SV* Perl_cv_const_sv(pTHX_ CV* cv) +PERL_CALLCONV SV* Perl_cv_const_sv(pTHX_ const CV *const cv) __attribute__warn_unused_result__; PERL_CALLCONV SV* Perl_op_const_sv(pTHX_ const OP* o, CV* cv) @@ -535,7 +532,9 @@ PERL_CALLCONV void Perl_deprecate_old(pTHX_ const char *const s) PERL_CALLCONV OP* Perl_die(pTHX_ const char* pat, ...) __attribute__format__null_ok__(__printf__,pTHX_1,pTHX_2); -PERL_CALLCONV OP* Perl_vdie(pTHX_ const char* pat, va_list* args); +#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_dounwind(pTHX_ I32 cxix); /* PERL_CALLCONV bool Perl_do_aexec(pTHX_ SV* really, SV** mark, SV** sp) @@ -608,7 +607,7 @@ PERL_CALLCONV bool Perl_do_exec3(pTHX_ const char *incmd, int fd, int do_report) #endif PERL_CALLCONV void Perl_do_execfree(pTHX); -#ifdef PERL_IN_DOIO_C +#if defined(PERL_IN_DOIO_C) || defined(PERL_DECL_PROT) STATIC void S_exec_failed(pTHX_ const char *cmd, int fd, int do_report) __attribute__nonnull__(pTHX_1); #define PERL_ARGS_ASSERT_EXEC_FAILED \ @@ -795,12 +794,14 @@ PERL_CALLCONV char* Perl_find_script(pTHX_ const char *scriptname, bool dosearch #define PERL_ARGS_ASSERT_FIND_SCRIPT \ assert(scriptname) -PERL_CALLCONV OP* Perl_force_list(pTHX_ OP* arg); -PERL_CALLCONV OP* Perl_fold_constants(pTHX_ OP *o) +#if defined(PERL_IN_OP_C) || defined(PERL_DECL_PROT) +STATIC OP* S_force_list(pTHX_ OP* arg); +STATIC OP* S_fold_constants(pTHX_ OP *o) __attribute__nonnull__(pTHX_1); #define PERL_ARGS_ASSERT_FOLD_CONSTANTS \ assert(o) +#endif PERL_CALLCONV char* Perl_form(pTHX_ const char* pat, ...) __attribute__format__(__printf__,pTHX_1,pTHX_2) __attribute__nonnull__(pTHX_1); @@ -813,7 +814,9 @@ PERL_CALLCONV char* Perl_vform(pTHX_ const char* pat, va_list* args) assert(pat) PERL_CALLCONV void Perl_free_tmps(pTHX); -PERL_CALLCONV OP* Perl_gen_constant_list(pTHX_ OP* o); +#if defined(PERL_IN_OP_C) || defined(PERL_DECL_PROT) +STATIC OP* S_gen_constant_list(pTHX_ OP* o); +#endif #if !defined(HAS_GETENV_LEN) PERL_CALLCONV char* Perl_getenv_len(pTHX_ const char *env_elem, unsigned long *len) __attribute__nonnull__(pTHX_1) @@ -894,14 +897,22 @@ PERL_CALLCONV GV* Perl_gv_fetchmeth_autoload(pTHX_ HV* stash, const char* name, assert(name) /* PERL_CALLCONV GV* Perl_gv_fetchmethod(pTHX_ HV* stash, const char* name) + __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); */ #define PERL_ARGS_ASSERT_GV_FETCHMETHOD \ - assert(name) + assert(stash); assert(name) PERL_CALLCONV GV* Perl_gv_fetchmethod_autoload(pTHX_ HV* stash, const char* name, I32 autoload) + __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); #define PERL_ARGS_ASSERT_GV_FETCHMETHOD_AUTOLOAD \ - assert(name) + assert(stash); assert(name) + +PERL_CALLCONV GV* Perl_gv_fetchmethod_flags(pTHX_ HV* stash, const char* name, U32 flags) + __attribute__nonnull__(pTHX_1) + __attribute__nonnull__(pTHX_2); +#define PERL_ARGS_ASSERT_GV_FETCHMETHOD_FLAGS \ + assert(stash); assert(name) PERL_CALLCONV GV* Perl_gv_fetchpv(pTHX_ const char *nambeg, I32 add, const svtype sv_type) __attribute__nonnull__(pTHX_1); @@ -1067,6 +1078,14 @@ 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) +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); +#define PERL_ARGS_ASSERT_REFCOUNTED_HE_NEW_COMMON \ + assert(key_p); assert(value) + +#endif /* PERL_CALLCONV SV** Perl_hv_store(pTHX_ HV *hv, const char *key, I32 klen, SV *val, U32 hash); */ /* 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); */ @@ -1091,9 +1110,11 @@ PERL_CALLCONV I32 Perl_ibcmp_utf8(pTHX_ const char *s1, char **pe1, UV l1, bool #define PERL_ARGS_ASSERT_IBCMP_UTF8 \ assert(s1); assert(s2) -PERL_CALLCONV bool Perl_ingroup(pTHX_ Gid_t testgid, bool effective) +#if defined(PERL_IN_DOIO_C) || defined(PERL_DECL_PROT) +STATIC bool S_ingroup(pTHX_ Gid_t testgid, bool effective) __attribute__warn_unused_result__; +#endif PERL_CALLCONV void Perl_init_argv_symbols(pTHX_ int argc, char **argv) __attribute__nonnull__(pTHX_2); #define PERL_ARGS_ASSERT_INIT_ARGV_SYMBOLS \ @@ -1123,12 +1144,6 @@ PERL_CALLCONV bool Perl_io_close(pTHX_ IO* io, bool not_implicit) PERL_CALLCONV OP* Perl_invert(pTHX_ OP* cmd) __attribute__warn_unused_result__; -PERL_CALLCONV bool Perl_is_gv_magical(pTHX_ const char *name, STRLEN len, U32 flags) - __attribute__warn_unused_result__ - __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_IS_GV_MAGICAL \ - assert(name) - PERL_CALLCONV I32 Perl_is_lvalue_sub(pTHX) __attribute__warn_unused_result__; @@ -1422,13 +1437,15 @@ 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); -PERL_CALLCONV OP* Perl_linklist(pTHX_ OP* o) +#if defined(PERL_IN_OP_C) || defined(PERL_DECL_PROT) +STATIC OP* S_linklist(pTHX_ OP *o) __attribute__nonnull__(pTHX_1); #define PERL_ARGS_ASSERT_LINKLIST \ assert(o) +STATIC OP* S_listkids(pTHX_ OP* o); +#endif PERL_CALLCONV OP* Perl_list(pTHX_ OP* o); -PERL_CALLCONV OP* Perl_listkids(pTHX_ OP* o); PERL_CALLCONV void Perl_load_module(pTHX_ U32 flags, SV* name, SV* ver, ...) __attribute__nonnull__(pTHX_2); #define PERL_ARGS_ASSERT_LOAD_MODULE \ @@ -1502,10 +1519,9 @@ PERL_CALLCONV int Perl_magic_clearhint(pTHX_ SV* sv, MAGIC* mg) assert(sv); assert(mg) PERL_CALLCONV int Perl_magic_clearisa(pTHX_ SV* sv, MAGIC* mg) - __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); #define PERL_ARGS_ASSERT_MAGIC_CLEARISA \ - assert(sv); assert(mg) + assert(mg) PERL_CALLCONV int Perl_magic_clearpack(pTHX_ SV* sv, MAGIC* mg) __attribute__nonnull__(pTHX_1) @@ -1714,10 +1730,9 @@ PERL_CALLCONV int Perl_magic_setregexp(pTHX_ SV* sv, MAGIC* mg) assert(sv); assert(mg) PERL_CALLCONV int Perl_magic_setsig(pTHX_ SV* sv, MAGIC* mg) - __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); #define PERL_ARGS_ASSERT_MAGIC_SETSIG \ - assert(sv); assert(mg) + assert(mg) PERL_CALLCONV int Perl_magic_setsubstr(pTHX_ SV* sv, MAGIC* mg) __attribute__nonnull__(pTHX_1) @@ -1767,11 +1782,6 @@ PERL_CALLCONV int Perl_magic_wipepack(pTHX_ SV* sv, MAGIC* mg) #define PERL_ARGS_ASSERT_MAGIC_WIPEPACK \ assert(sv); assert(mg) -PERL_CALLCONV void Perl_magicname(pTHX_ const char* sym, const char* name, I32 namlen) - __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_MAGICNAME \ - assert(sym) - PERL_CALLCONV void Perl_markstack_grow(pTHX); #if defined(USE_LOCALE_COLLATE) PERL_CALLCONV int Perl_magic_setcollxfrm(pTHX_ SV* sv, MAGIC* mg) @@ -1824,7 +1834,7 @@ PERL_CALLCONV int Perl_mg_copy(pTHX_ SV *sv, SV *nsv, const char *key, I32 klen) #define PERL_ARGS_ASSERT_MG_COPY \ assert(sv); assert(nsv) -PERL_CALLCONV void Perl_mg_localize(pTHX_ SV* sv, SV* nsv) +PERL_CALLCONV void Perl_mg_localize(pTHX_ SV* sv, SV* nsv, bool setmagic) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); #define PERL_ARGS_ASSERT_MG_LOCALIZE \ @@ -1869,17 +1879,12 @@ PERL_CALLCONV void Perl_mini_mktime(pTHX_ struct tm *ptm) assert(ptm) PERL_CALLCONV OP* Perl_mod(pTHX_ OP* o, I32 type); -PERL_CALLCONV int Perl_mode_from_discipline(pTHX_ SV* discp); +PERL_CALLCONV int Perl_mode_from_discipline(pTHX_ const char* s, STRLEN len); PERL_CALLCONV const char* Perl_moreswitches(pTHX_ const char* s) __attribute__nonnull__(pTHX_1); #define PERL_ARGS_ASSERT_MORESWITCHES \ assert(s) -PERL_CALLCONV OP* Perl_my(pTHX_ OP* o) - __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_MY \ - assert(o) - PERL_CALLCONV NV Perl_my_atof(pTHX_ const char *s) __attribute__nonnull__(pTHX_1); #define PERL_ARGS_ASSERT_MY_ATOF \ @@ -2316,12 +2321,6 @@ PERL_CALLCONV char* Perl_ninstr(pTHX_ const char* big, const char* bigend, const #define PERL_ARGS_ASSERT_NINSTR \ assert(big); assert(bigend); assert(little); assert(lend) -PERL_CALLCONV OP* Perl_oopsCV(pTHX_ OP* o) - __attribute__noreturn__ - __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_OOPSCV \ - assert(o) - PERL_CALLCONV void Perl_op_free(pTHX_ OP* arg); #ifdef PERL_MAD PERL_CALLCONV OP* Perl_package(pTHX_ OP* o) @@ -2364,7 +2363,9 @@ PERL_CALLCONV OP* Perl_oopsHV(pTHX_ OP* o) PERL_CALLCONV void Perl_pad_leavemy(pTHX); PERL_CALLCONV SV* Perl_pad_sv(pTHX_ PADOFFSET po); PERL_CALLCONV void Perl_pad_free(pTHX_ PADOFFSET po); -PERL_CALLCONV void Perl_pad_reset(pTHX); +#if defined(PERL_IN_PAD_C) || defined(PERL_DECL_PROT) +STATIC void S_pad_reset(pTHX); +#endif PERL_CALLCONV void Perl_pad_swipe(pTHX_ PADOFFSET po, bool refadjust); PERL_CALLCONV void Perl_peep(pTHX_ OP* o); PERL_CALLCONV PerlIO* Perl_start_glob(pTHX_ SV *tmpglob, IO *io) @@ -2421,17 +2422,17 @@ PERL_CALLCONV I32 Perl_eval_sv(pTHX_ SV* sv, I32 flags) #define PERL_ARGS_ASSERT_EVAL_SV \ assert(sv) -PERL_CALLCONV SV* Perl_get_sv(pTHX_ const char* name, I32 create) +PERL_CALLCONV SV* Perl_get_sv(pTHX_ const char *name, I32 flags) __attribute__nonnull__(pTHX_1); #define PERL_ARGS_ASSERT_GET_SV \ assert(name) -PERL_CALLCONV AV* Perl_get_av(pTHX_ const char* name, I32 create) +PERL_CALLCONV AV* Perl_get_av(pTHX_ const char *name, I32 flags) __attribute__nonnull__(pTHX_1); #define PERL_ARGS_ASSERT_GET_AV \ assert(name) -PERL_CALLCONV HV* Perl_get_hv(pTHX_ const char* name, I32 create) +PERL_CALLCONV HV* Perl_get_hv(pTHX_ const char *name, I32 flags) __attribute__nonnull__(pTHX_1); #define PERL_ARGS_ASSERT_GET_HV \ assert(name) @@ -2482,8 +2483,8 @@ PERL_CALLCONV void Perl_packlist(pTHX_ SV *cat, const char *pat, const char *pat #define PERL_ARGS_ASSERT_PACKLIST \ assert(cat); assert(pat); assert(patend); assert(beglist); assert(endlist) -#ifdef PERL_USES_PL_PIDSTATUS -PERL_CALLCONV void Perl_pidgone(pTHX_ Pid_t pid, int status); +#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); @@ -2496,18 +2497,22 @@ PERL_CALLCONV OP* Perl_pmruntime(pTHX_ OP *o, OP *expr, bool isreg) #define PERL_ARGS_ASSERT_PMRUNTIME \ assert(o); assert(expr) -PERL_CALLCONV OP* Perl_pmtrans(pTHX_ OP* o, OP* expr, OP* repl) +#if defined(PERL_IN_OP_C) || defined(PERL_DECL_PROT) +STATIC OP* S_pmtrans(pTHX_ OP* o, OP* expr, OP* repl) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2) __attribute__nonnull__(pTHX_3); #define PERL_ARGS_ASSERT_PMTRANS \ assert(o); assert(expr); assert(repl) +#endif 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); */ -PERL_CALLCONV OP* Perl_refkids(pTHX_ OP* o, I32 type); +#if defined(PERL_IN_OP_C) || defined(PERL_DECL_PROT) +STATIC OP* S_refkids(pTHX_ OP* o, I32 type); +#endif PERL_CALLCONV void Perl_regdump(pTHX_ const regexp* r) __attribute__nonnull__(pTHX_1); #define PERL_ARGS_ASSERT_REGDUMP \ @@ -2556,12 +2561,12 @@ PERL_CALLCONV void* Perl_regdupe_internal(pTHX_ REGEXP * const r, CLONE_PARAMS* assert(r); assert(param) #endif -PERL_CALLCONV REGEXP* Perl_pregcomp(pTHX_ const SV * const pattern, const U32 flags) +PERL_CALLCONV REGEXP* Perl_pregcomp(pTHX_ SV * const pattern, const U32 flags) __attribute__nonnull__(pTHX_1); #define PERL_ARGS_ASSERT_PREGCOMP \ assert(pattern) -PERL_CALLCONV REGEXP* Perl_re_compile(pTHX_ const SV * const pattern, U32 flags) +PERL_CALLCONV REGEXP* Perl_re_compile(pTHX_ SV * const pattern, U32 flags) __attribute__nonnull__(pTHX_1); #define PERL_ARGS_ASSERT_RE_COMPILE \ assert(pattern) @@ -2686,17 +2691,19 @@ 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); -PERL_CALLCONV void Perl_rxres_free(pTHX_ void** rsp) +#if defined(PERL_IN_PP_CTL_C) || defined(PERL_DECL_PROT) +STATIC void S_rxres_free(pTHX_ void** rsp) __attribute__nonnull__(pTHX_1); #define PERL_ARGS_ASSERT_RXRES_FREE \ assert(rsp) -PERL_CALLCONV void Perl_rxres_restore(pTHX_ void **rsp, REGEXP *rx) +STATIC void S_rxres_restore(pTHX_ void **rsp, REGEXP *rx) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); #define PERL_ARGS_ASSERT_RXRES_RESTORE \ assert(rsp); assert(rx) +#endif PERL_CALLCONV void Perl_rxres_save(pTHX_ void **rsp, REGEXP *rx) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); @@ -2772,15 +2779,20 @@ 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_adelete(pTHX_ AV *av, I32 key) + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_SAVE_ADELETE \ + assert(av) + PERL_CALLCONV void Perl_save_destructor(pTHX_ DESTRUCTORFUNC_NOCONTEXT_t f, void* p) __attribute__nonnull__(pTHX_2); #define PERL_ARGS_ASSERT_SAVE_DESTRUCTOR \ assert(p) PERL_CALLCONV void Perl_save_destructor_x(pTHX_ DESTRUCTORFUNC_t f, void* p); -PERL_CALLCONV void Perl_save_freesv(pTHX_ SV* sv); -PERL_CALLCONV void Perl_save_freeop(pTHX_ OP* o); -PERL_CALLCONV void Perl_save_freepv(pTHX_ char* pv); +/* PERL_CALLCONV void Perl_save_freesv(pTHX_ SV* sv); */ +/* PERL_CALLCONV void Perl_save_freeop(pTHX_ OP* o); */ +/* PERL_CALLCONV void Perl_save_freepv(pTHX_ char* pv); */ PERL_CALLCONV void Perl_save_generic_svref(pTHX_ SV** sptr) __attribute__nonnull__(pTHX_1); #define PERL_ARGS_ASSERT_SAVE_GENERIC_SVREF \ @@ -2806,11 +2818,17 @@ PERL_CALLCONV HV* Perl_save_hash(pTHX_ GV* gv) #define PERL_ARGS_ASSERT_SAVE_HASH \ assert(gv) -PERL_CALLCONV void Perl_save_helem(pTHX_ HV *hv, SV *key, SV **sptr) +PERL_CALLCONV void Perl_save_hints(pTHX); +/* PERL_CALLCONV void Perl_save_helem(pTHX_ HV *hv, SV *key, SV **sptr) + __attribute__nonnull__(pTHX_1) + __attribute__nonnull__(pTHX_2) + __attribute__nonnull__(pTHX_3); */ + +PERL_CALLCONV void Perl_save_helem_flags(pTHX_ HV *hv, SV *key, SV **sptr, const U32 flags) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2) __attribute__nonnull__(pTHX_3); -#define PERL_ARGS_ASSERT_SAVE_HELEM \ +#define PERL_ARGS_ASSERT_SAVE_HELEM_FLAGS \ assert(hv); assert(key); assert(sptr) PERL_CALLCONV void Perl_save_hptr(pTHX_ HV** hptr) @@ -2858,8 +2876,8 @@ PERL_CALLCONV void Perl_save_long(pTHX_ long* longp) #define PERL_ARGS_ASSERT_SAVE_LONG \ assert(longp) -PERL_CALLCONV void Perl_save_mortalizesv(pTHX_ SV* sv) - __attribute__nonnull__(pTHX_1); +/* PERL_CALLCONV void Perl_save_mortalizesv(pTHX_ SV* sv) + __attribute__nonnull__(pTHX_1); */ #define PERL_ARGS_ASSERT_SAVE_MORTALIZESV \ assert(sv) @@ -2868,7 +2886,7 @@ PERL_CALLCONV void Perl_save_nogv(pTHX_ GV* gv) #define PERL_ARGS_ASSERT_SAVE_NOGV \ assert(gv) -PERL_CALLCONV void Perl_save_op(pTHX); +/* PERL_CALLCONV void Perl_save_op(pTHX); */ PERL_CALLCONV SV* Perl_save_scalar(pTHX_ GV* gv) __attribute__nonnull__(pTHX_1); #define PERL_ARGS_ASSERT_SAVE_SCALAR \ @@ -2896,10 +2914,18 @@ PERL_CALLCONV SV* Perl_save_svref(pTHX_ SV** sptr) #define PERL_ARGS_ASSERT_SAVE_SVREF \ assert(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) +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); -PERL_CALLCONV OP* Perl_scalarkids(pTHX_ OP* o); -PERL_CALLCONV OP* Perl_scalarseq(pTHX_ OP* o); +#if defined(PERL_IN_OP_C) || defined(PERL_DECL_PROT) +STATIC OP* S_scalarkids(pTHX_ OP* o); +STATIC OP* S_scalarseq(pTHX_ OP* o); +#endif PERL_CALLCONV OP* Perl_scalarvoid(pTHX_ OP* o) __attribute__nonnull__(pTHX_1); #define PERL_ARGS_ASSERT_SCALARVOID \ @@ -2937,13 +2963,6 @@ PERL_CALLCONV char* Perl_screaminstr(pTHX_ SV *bigstr, SV *littlestr, I32 start_ #define PERL_ARGS_ASSERT_SCREAMINSTR \ assert(bigstr); assert(littlestr); assert(old_posp) -#if !defined(VMS) -PERL_CALLCONV I32 Perl_setenv_getix(pTHX_ const char* nam) - __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_SETENV_GETIX \ - assert(nam) - -#endif PERL_CALLCONV void Perl_setdefout(pTHX_ GV* gv); PERL_CALLCONV HEK* Perl_share_hek(pTHX_ const char* str, I32 len, U32 hash) __attribute__nonnull__(pTHX_1); @@ -2985,17 +3004,12 @@ PERL_CALLCONV IO* Perl_sv_2io(pTHX_ SV *const sv) #define PERL_ARGS_ASSERT_SV_2IO \ assert(sv) -#ifdef PERL_IN_SV_C +#if defined(PERL_IN_SV_C) || defined(PERL_DECL_PROT) STATIC bool S_glob_2number(pTHX_ GV* const gv) __attribute__nonnull__(pTHX_1); #define PERL_ARGS_ASSERT_GLOB_2NUMBER \ assert(gv) -STATIC char* S_glob_2pv(pTHX_ GV* const gv, STRLEN * const len) - __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_GLOB_2PV \ - assert(gv) - #endif /* PERL_CALLCONV IV Perl_sv_2iv(pTHX_ SV *sv); */ PERL_CALLCONV IV Perl_sv_2iv_flags(pTHX_ SV *const sv, const I32 flags); @@ -3059,11 +3073,13 @@ 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); -PERL_CALLCONV void Perl_sv_add_arena(pTHX_ char *const ptr, const U32 size, const U32 flags) +#if defined(PERL_IN_SV_C) || defined(PERL_DECL_PROT) +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 \ assert(ptr) +#endif PERL_CALLCONV int Perl_sv_backoff(pTHX_ SV *const sv) __attribute__nonnull__(pTHX_1); #define PERL_ARGS_ASSERT_SV_BACKOFF \ @@ -3179,12 +3195,18 @@ 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_insert(pTHX_ SV *const bigstr, const STRLEN offset, const STRLEN len, const char *const little, const STRLEN littlelen) +/* 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); + __attribute__nonnull__(pTHX_4); */ #define PERL_ARGS_ASSERT_SV_INSERT \ assert(bigstr); assert(little) +PERL_CALLCONV void Perl_sv_insert_flags(pTHX_ SV *const bigstr, const STRLEN offset, const STRLEN len, const char *const little, const STRLEN littlelen, const U32 flags) + __attribute__nonnull__(pTHX_1) + __attribute__nonnull__(pTHX_4); +#define PERL_ARGS_ASSERT_SV_INSERT_FLAGS \ + assert(bigstr); assert(little) + PERL_CALLCONV int Perl_sv_isa(pTHX_ SV* sv, const char *const name) __attribute__nonnull__(pTHX_2); #define PERL_ARGS_ASSERT_SV_ISA \ @@ -3651,7 +3673,7 @@ PERL_CALLCONV UV Perl_get_hash_seed(pTHX) __attribute__warn_unused_result__; PERL_CALLCONV void Perl_report_evil_fh(pTHX_ const GV *gv, const IO *io, I32 op); -PERL_CALLCONV void Perl_report_uninit(pTHX_ SV* uninit_sv); +PERL_CALLCONV void Perl_report_uninit(pTHX_ const SV *uninit_sv); PERL_CALLCONV void Perl_warn(pTHX_ const char* pat, ...) __attribute__format__(__printf__,pTHX_1,pTHX_2) __attribute__nonnull__(pTHX_1); @@ -3701,11 +3723,13 @@ PERL_CALLCONV void Perl_parser_free(pTHX_ const yy_parser *parser) #define PERL_ARGS_ASSERT_PARSER_FREE \ assert(parser) -PERL_CALLCONV int Perl_yywarn(pTHX_ const char *const s) +#if defined(PERL_IN_TOKE_C) || defined(PERL_DECL_PROT) +STATIC int S_yywarn(pTHX_ const char *const s) __attribute__nonnull__(pTHX_1); #define PERL_ARGS_ASSERT_YYWARN \ assert(s) +#endif #if defined(MYMALLOC) PERL_CALLCONV void Perl_dump_mstats(pTHX_ const char* s) __attribute__nonnull__(pTHX_1); @@ -3941,6 +3965,9 @@ PERL_CALLCONV void Perl_reginitcolors(pTHX); #define PERL_ARGS_ASSERT_SV_UTF8_UPGRADE \ assert(sv) +/* PERL_CALLCONV STRLEN sv_utf8_upgrade_nomg(pTHX_ SV *sv) + __attribute__nonnull__(pTHX_1); */ + PERL_CALLCONV bool Perl_sv_utf8_downgrade(pTHX_ SV *const sv, const bool fail_ok) __attribute__nonnull__(pTHX_1); #define PERL_ARGS_ASSERT_SV_UTF8_DOWNGRADE \ @@ -3994,7 +4021,6 @@ PERL_CALLCONV OP * Perl_my_attrs(pTHX_ OP *o, OP *attrs) #define PERL_ARGS_ASSERT_MY_ATTRS \ assert(o) -PERL_CALLCONV void Perl_boot_core_xsutils(pTHX); #if defined(USE_ITHREADS) PERL_CALLCONV PERL_CONTEXT* Perl_cx_dup(pTHX_ PERL_CONTEXT* cx, I32 ix, I32 max, CLONE_PARAMS* param) __attribute__warn_unused_result__ @@ -4061,13 +4087,22 @@ PERL_CALLCONV MAGIC* Perl_mg_dup(pTHX_ MAGIC *mg, CLONE_PARAMS *const param) #define PERL_ARGS_ASSERT_MG_DUP \ assert(param) -PERL_CALLCONV SV* Perl_sv_dup(pTHX_ const SV* sstr, CLONE_PARAMS* param) +#if defined(PERL_IN_SV_C) || defined(PERL_DECL_PROT) +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) + __attribute__nonnull__(pTHX_4); +#define PERL_ARGS_ASSERT_SV_DUP_INC_MULTIPLE \ + assert(source); assert(dest); 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 void Perl_rvpv_dup(pTHX_ SV* dstr, const SV *sstr, CLONE_PARAMS* 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) __attribute__nonnull__(pTHX_3); @@ -4084,25 +4119,25 @@ PERL_CALLCONV PTR_TBL_t* Perl_ptr_table_new(pTHX) __attribute__malloc__ __attribute__warn_unused_result__; -PERL_CALLCONV void* Perl_ptr_table_fetch(pTHX_ PTR_TBL_t *tbl, const void *sv) +PERL_CALLCONV void* Perl_ptr_table_fetch(pTHX_ PTR_TBL_t *const tbl, const void *const sv) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); #define PERL_ARGS_ASSERT_PTR_TABLE_FETCH \ assert(tbl) -PERL_CALLCONV void Perl_ptr_table_store(pTHX_ PTR_TBL_t *tbl, const void *oldsv, void *newsv) +PERL_CALLCONV void Perl_ptr_table_store(pTHX_ PTR_TBL_t *const tbl, const void *const oldsv, void *const newsv) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_3); #define PERL_ARGS_ASSERT_PTR_TABLE_STORE \ assert(tbl); assert(newsv) -PERL_CALLCONV void Perl_ptr_table_split(pTHX_ PTR_TBL_t *tbl) +PERL_CALLCONV void Perl_ptr_table_split(pTHX_ PTR_TBL_t *const tbl) __attribute__nonnull__(pTHX_1); #define PERL_ARGS_ASSERT_PTR_TABLE_SPLIT \ assert(tbl) -PERL_CALLCONV void Perl_ptr_table_clear(pTHX_ PTR_TBL_t *tbl); -PERL_CALLCONV void Perl_ptr_table_free(pTHX_ PTR_TBL_t *tbl); +PERL_CALLCONV void Perl_ptr_table_clear(pTHX_ PTR_TBL_t *const tbl); +PERL_CALLCONV void Perl_ptr_table_free(pTHX_ PTR_TBL_t *const tbl); #if defined(USE_ITHREADS) # if defined(HAVE_INTERP_INTERN) PERL_CALLCONV void Perl_sys_intern_dup(pTHX_ struct interp_intern* src, struct interp_intern* dst) @@ -4219,6 +4254,11 @@ 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__; @@ -4586,6 +4626,12 @@ STATIC OP* S_scalarboolean(pTHX_ OP *o) STATIC OP* S_newDEFSVOP(pTHX) __attribute__warn_unused_result__; +STATIC OP* S_search_const(pTHX_ OP *o) + __attribute__warn_unused_result__ + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_SEARCH_CONST \ + assert(o) + STATIC OP* S_new_logop(pTHX_ I32 type, I32 flags, OP **firstp, OP **otherp) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_3) @@ -4719,7 +4765,16 @@ STATIC void S_find_beginning(pTHX_ SV* linestr_sv, PerlIO *rsfp) assert(linestr_sv); assert(rsfp) STATIC void S_forbid_setid(pTHX_ const char flag, const bool suidscript); -STATIC void S_incpush(pTHX_ const char *dir, bool addsubdirs, bool addoldvers, bool usesep, bool canrelocate); +STATIC void S_incpush(pTHX_ const char *const dir, STRLEN len, U32 flags) + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_INCPUSH \ + assert(dir) + +STATIC void S_incpush_use_sep(pTHX_ const char *p, STRLEN len, U32 flags) + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_INCPUSH_USE_SEP \ + assert(p) + STATIC void S_init_interp(pTHX); STATIC void S_init_ids(pTHX); STATIC void S_init_main_stash(pTHX); @@ -4746,46 +4801,24 @@ STATIC void S_usage(pTHX_ const char *name) #define PERL_ARGS_ASSERT_USAGE \ assert(name) -#ifdef DOSUID -# ifdef IAMSUID -STATIC void S_validate_suid(pTHX_ const char *validarg, int fdscript, bool suidscript, SV* linestr_sv, PerlIO *rsfp) - __attribute__nonnull__(pTHX_1) - __attribute__nonnull__(pTHX_4) - __attribute__nonnull__(pTHX_5); -#define PERL_ARGS_ASSERT_VALIDATE_SUID \ - assert(validarg); assert(linestr_sv); assert(rsfp) - -# else -STATIC void S_validate_suid(pTHX_ const char *validarg, const char *scriptname, int fdscript, SV* linestr_sv, PerlIO *rsfp) - __attribute__nonnull__(pTHX_1) - __attribute__nonnull__(pTHX_2) - __attribute__nonnull__(pTHX_4) - __attribute__nonnull__(pTHX_5); -#define PERL_ARGS_ASSERT_VALIDATE_SUID \ - assert(validarg); assert(scriptname); assert(linestr_sv); assert(rsfp) - -# endif -#else -# ifndef SETUID_SCRIPTS_ARE_SECURE_NOW +#ifndef SETUID_SCRIPTS_ARE_SECURE_NOW STATIC void S_validate_suid(pTHX_ PerlIO *rsfp) __attribute__nonnull__(pTHX_1); #define PERL_ARGS_ASSERT_VALIDATE_SUID \ assert(rsfp) -# endif #endif -# if defined(IAMSUID) -STATIC int S_fd_on_nosuid_fs(pTHX_ int fd); -# endif STATIC void* S_parse_body(pTHX_ char **env, XSINIT_t xsinit); STATIC void S_run_body(pTHX_ I32 oldscope) __attribute__noreturn__; -STATIC SV * S_incpush_if_exists(pTHX_ SV *dir) - __attribute__nonnull__(pTHX_1); +STATIC SV * S_incpush_if_exists(pTHX_ AV *const av, SV *dir, SV *const stem) + __attribute__nonnull__(pTHX_1) + __attribute__nonnull__(pTHX_2) + __attribute__nonnull__(pTHX_3); #define PERL_ARGS_ASSERT_INCPUSH_IF_EXISTS \ - assert(dir) + assert(av); assert(dir); assert(stem) #endif @@ -5150,7 +5183,7 @@ STATIC regnode* S_regpiece(pTHX_ struct RExC_state_t *pRExC_state, I32 *flagp, U #define PERL_ARGS_ASSERT_REGPIECE \ assert(pRExC_state); assert(flagp) -STATIC regnode* S_reg_namedseq(pTHX_ struct RExC_state_t *pRExC_state, UV *valuep) +STATIC regnode* S_reg_namedseq(pTHX_ struct RExC_state_t *pRExC_state, UV *valuep, I32 *flagp) __attribute__nonnull__(pTHX_1); #define PERL_ARGS_ASSERT_REG_NAMEDSEQ \ assert(pRExC_state) @@ -5462,7 +5495,7 @@ STATIC SV* S_pm_description(pTHX_ const PMOP *pm) #endif #if defined(PERL_IN_SCOPE_C) || defined(PERL_DECL_PROT) -STATIC SV* S_save_scalar_at(pTHX_ SV **sptr) +STATIC SV* S_save_scalar_at(pTHX_ SV **sptr, const U32 flags) __attribute__nonnull__(pTHX_1); #define PERL_ARGS_ASSERT_SAVE_SCALAR_AT \ assert(sptr) @@ -5516,7 +5549,7 @@ STATIC void S_sv_del_backref(pTHX_ SV *const tsv, SV *const sv) #define PERL_ARGS_ASSERT_SV_DEL_BACKREF \ assert(tsv); assert(sv) -STATIC SV * S_varname(pTHX_ GV *gv, const char gvtype, PADOFFSET targ, SV *keyname, I32 aindex, int subscript_type) +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__; # ifdef DEBUGGING @@ -5615,7 +5648,7 @@ STATIC void S_glob_assign_ref(pTHX_ SV *const dstr, SV *const sstr) #define PERL_ARGS_ASSERT_GLOB_ASSIGN_REF \ assert(dstr); assert(sstr) -STATIC PTR_TBL_ENT_t * S_ptr_table_find(PTR_TBL_t *tbl, const void *sv) +STATIC PTR_TBL_ENT_t * S_ptr_table_find(PTR_TBL_t *const tbl, const void *const sv) __attribute__warn_unused_result__ __attribute__nonnull__(1); #define PERL_ARGS_ASSERT_PTR_TABLE_FIND \ @@ -5821,10 +5854,16 @@ STATIC void S_printbuf(pTHX_ const char *const fmt, const char *const s) #endif #if defined(PERL_IN_UNIVERSAL_C) || defined(PERL_DECL_PROT) -STATIC bool S_isa_lookup(pTHX_ HV *stash, const char * const name, const HV * const name_stash) +STATIC bool S_isa_lookup(pTHX_ HV *stash, const char * const name) + __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); #define PERL_ARGS_ASSERT_ISA_LOOKUP \ - assert(name) + assert(stash); assert(name) + +STATIC HV * S_get_isa_hash(pTHX_ HV *const stash) + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_GET_ISA_HASH \ + assert(stash) #endif @@ -5850,6 +5889,15 @@ STATIC bool S_vdie_common(pTHX_ const char *message, STRLEN msglen, I32 utf8, bo STATIC char * S_write_no_mem(pTHX) __attribute__noreturn__; +#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) + __attribute__nonnull__(8) + __attribute__nonnull__(10); +#define PERL_ARGS_ASSERT_MEM_LOG_COMMON \ + assert(type_name); assert(filename); assert(funcname) + +#endif #endif #if defined(PERL_IN_NUMERIC_C) || defined(PERL_DECL_PROT) @@ -5897,9 +5945,12 @@ PERL_CALLCONV void Perl_sv_catsv_flags(pTHX_ SV *const dsv, SV *const ssv, const #define PERL_ARGS_ASSERT_SV_CATSV_FLAGS \ assert(dsv) -PERL_CALLCONV STRLEN Perl_sv_utf8_upgrade_flags(pTHX_ SV *const sv, const I32 flags) +/* PERL_CALLCONV STRLEN Perl_sv_utf8_upgrade_flags(pTHX_ SV *const sv, const I32 flags) + __attribute__nonnull__(pTHX_1); */ + +PERL_CALLCONV STRLEN Perl_sv_utf8_upgrade_flags_grow(pTHX_ SV *const sv, const I32 flags, STRLEN extra) __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_SV_UTF8_UPGRADE_FLAGS \ +#define PERL_ARGS_ASSERT_SV_UTF8_UPGRADE_FLAGS_GROW \ assert(sv) PERL_CALLCONV char* Perl_sv_pvn_force_flags(pTHX_ SV *const sv, STRLEN *const lp, const I32 flags) @@ -5923,10 +5974,9 @@ PERL_CALLCONV int Perl_my_socketpair(int family, int type, int protocol, int fd[ PERL_CALLCONV int Perl_my_dirfd(pTHX_ DIR* dir); #ifdef PERL_OLD_COPY_ON_WRITE PERL_CALLCONV SV* Perl_sv_setsv_cow(pTHX_ SV* dstr, SV* sstr) - __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); #define PERL_ARGS_ASSERT_SV_SETSV_COW \ - assert(dstr); assert(sstr) + assert(sstr) #endif @@ -5982,7 +6032,7 @@ PERL_CALLCONV PerlIO * Perl_PerlIO_stderr(pTHX) #endif /* PERLIO_LAYERS */ PERL_CALLCONV void Perl_deb_stack_all(pTHX); -#ifdef PERL_IN_DEB_C +#if defined(PERL_IN_DEB_C) || defined(PERL_DECL_PROT) 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 \ @@ -6143,7 +6193,7 @@ PERL_CALLCONV I32* Perl_hv_placeholders_p(pTHX_ HV *hv) #define PERL_ARGS_ASSERT_HV_PLACEHOLDERS_P \ assert(hv) -PERL_CALLCONV I32 Perl_hv_placeholders_get(pTHX_ HV *hv) +PERL_CALLCONV I32 Perl_hv_placeholders_get(pTHX_ const HV *hv) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); #define PERL_ARGS_ASSERT_HV_PLACEHOLDERS_GET \ @@ -6163,17 +6213,17 @@ PERL_CALLCONV SV* Perl_magic_scalarpack(pTHX_ HV *hv, MAGIC *mg) #if defined(PERL_IN_SV_C) || defined(PERL_DECL_PROT) -STATIC SV * S_find_hash_subscript(pTHX_ HV *hv, SV *val) +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 \ assert(val) -STATIC I32 S_find_array_subscript(pTHX_ AV *av, SV *val) +STATIC I32 S_find_array_subscript(pTHX_ const AV *const av, const SV *const val) __attribute__nonnull__(pTHX_2); #define PERL_ARGS_ASSERT_FIND_ARRAY_SUBSCRIPT \ assert(val) -STATIC SV* S_find_uninit_var(pTHX_ OP* obase, SV* uninit_sv, bool top); +STATIC SV* S_find_uninit_var(pTHX_ const OP *const obase, const SV *const uninit_sv, bool top); #endif #ifdef PERL_NEED_MY_HTOLE16 @@ -6266,11 +6316,11 @@ PERL_CALLCONV GV* Perl_gv_fetchsv(pTHX_ SV *name, I32 flags, const svtype sv_typ #define PERL_ARGS_ASSERT_GV_FETCHSV \ assert(name) -PERL_CALLCONV bool Perl_is_gv_magical_sv(pTHX_ SV *name, U32 flags) +PERL_CALLCONV bool Perl_is_gv_magical_sv(pTHX_ SV *const name_sv, U32 flags) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); #define PERL_ARGS_ASSERT_IS_GV_MAGICAL_SV \ - assert(name) + assert(name_sv) PERL_CALLCONV bool Perl_stashpv_hvname_match(pTHX_ const COP *c, const HV *hv) @@ -6505,6 +6555,35 @@ PERL_CALLCONV void Perl_emulate_cop_io(pTHX_ const COP *const c, SV *const sv) PERL_CALLCONV REGEXP * Perl_get_re_arg(pTHX_ SV *sv); +PERL_CALLCONV SV* Perl_mro_get_private_data(pTHX_ struct mro_meta *const smeta, const struct mro_alg *const which) + __attribute__nonnull__(pTHX_1) + __attribute__nonnull__(pTHX_2); +#define PERL_ARGS_ASSERT_MRO_GET_PRIVATE_DATA \ + assert(smeta); assert(which) + +PERL_CALLCONV SV* Perl_mro_set_private_data(pTHX_ struct mro_meta *const smeta, const struct mro_alg *const which, SV *const data) + __attribute__nonnull__(pTHX_1) + __attribute__nonnull__(pTHX_2) + __attribute__nonnull__(pTHX_3); +#define PERL_ARGS_ASSERT_MRO_SET_PRIVATE_DATA \ + assert(smeta); assert(which); assert(data) + +PERL_CALLCONV const struct mro_alg * Perl_mro_get_from_name(pTHX_ SV *name) + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_MRO_GET_FROM_NAME \ + assert(name) + +PERL_CALLCONV void Perl_mro_register(pTHX_ const struct mro_alg *mro) + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_MRO_REGISTER \ + assert(mro) + +PERL_CALLCONV void Perl_mro_set_mro(pTHX_ struct mro_meta *const meta, SV *const name) + __attribute__nonnull__(pTHX_1) + __attribute__nonnull__(pTHX_2); +#define PERL_ARGS_ASSERT_MRO_SET_MRO \ + assert(meta); assert(name) + PERL_CALLCONV struct mro_meta* Perl_mro_meta_init(pTHX_ HV* stash) __attribute__nonnull__(pTHX_1); #define PERL_ARGS_ASSERT_MRO_META_INIT \ @@ -6524,12 +6603,7 @@ PERL_CALLCONV AV* Perl_mro_get_linear_isa(pTHX_ HV* stash) assert(stash) #if defined(PERL_IN_MRO_C) || defined(PERL_DECL_PROT) -STATIC AV* S_mro_get_linear_isa_c3(pTHX_ HV* stash, I32 level) - __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_MRO_GET_LINEAR_ISA_C3 \ - assert(stash) - -STATIC AV* S_mro_get_linear_isa_dfs(pTHX_ HV* stash, I32 level) +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 \ assert(stash) @@ -6560,6 +6634,11 @@ PERL_CALLCONV void Perl_sys_init3(int* argc, char*** argv, char*** env) assert(argc); assert(argv); assert(env) PERL_CALLCONV void Perl_sys_term(void); +PERL_CALLCONV const char * Perl_fetch_cop_label(pTHX_ struct refcounted_he *const chain, STRLEN *len, U32 *flags); +PERL_CALLCONV struct refcounted_he * Perl_store_cop_label(pTHX_ struct refcounted_he *const chain, const char *label) + __attribute__nonnull__(pTHX_2); +#define PERL_ARGS_ASSERT_STORE_COP_LABEL \ + assert(label) END_EXTERN_C