* 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.
#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)
#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);
#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 \
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__
__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)
#define PERL_ARGS_ASSERT_WARNER_NOCONTEXT \
assert(pat)
-PERL_CALLCONV SV* Perl_newSVpvf_nocontext(const char* pat, ...)
+PERL_CALLCONV SV* Perl_newSVpvf_nocontext(const char *const pat, ...)
__attribute__format__(__printf__,1,2)
__attribute__nonnull__(1);
#define PERL_ARGS_ASSERT_NEWSVPVF_NOCONTEXT \
assert(pat)
-PERL_CALLCONV void Perl_sv_catpvf_nocontext(SV* sv, const char* pat, ...)
+PERL_CALLCONV void Perl_sv_catpvf_nocontext(SV *const sv, const char *const pat, ...)
__attribute__format__(__printf__,2,3)
__attribute__nonnull__(1)
__attribute__nonnull__(2);
#define PERL_ARGS_ASSERT_SV_CATPVF_NOCONTEXT \
assert(sv); assert(pat)
-PERL_CALLCONV void Perl_sv_setpvf_nocontext(SV* sv, const char* pat, ...)
+PERL_CALLCONV void Perl_sv_setpvf_nocontext(SV *const sv, const char *const pat, ...)
__attribute__format__(__printf__,2,3)
__attribute__nonnull__(1)
__attribute__nonnull__(2);
#define PERL_ARGS_ASSERT_SV_SETPVF_NOCONTEXT \
assert(sv); assert(pat)
-PERL_CALLCONV void Perl_sv_catpvf_mg_nocontext(SV* sv, const char* pat, ...)
+PERL_CALLCONV void Perl_sv_catpvf_mg_nocontext(SV *const sv, const char *const pat, ...)
__attribute__format__(__printf__,2,3)
__attribute__nonnull__(1)
__attribute__nonnull__(2);
#define PERL_ARGS_ASSERT_SV_CATPVF_MG_NOCONTEXT \
assert(sv); assert(pat)
-PERL_CALLCONV void Perl_sv_setpvf_mg_nocontext(SV* sv, const char* pat, ...)
+PERL_CALLCONV void Perl_sv_setpvf_mg_nocontext(SV *const sv, const char *const pat, ...)
__attribute__format__(__printf__,2,3)
__attribute__nonnull__(1)
__attribute__nonnull__(2);
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 \
#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)
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 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)
#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 \
#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);
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)
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);
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);
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); */
PERL_CALLCONV void Perl_hv_undef(pTHX_ HV *hv);
-PERL_CALLCONV I32 Perl_ibcmp(pTHX_ const char* a, const char* b, I32 len)
+PERL_CALLCONV I32 Perl_ibcmp(const char* a, const char* b, I32 len)
__attribute__pure__
- __attribute__nonnull__(pTHX_1)
- __attribute__nonnull__(pTHX_2);
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2);
#define PERL_ARGS_ASSERT_IBCMP \
assert(a); assert(b)
-PERL_CALLCONV I32 Perl_ibcmp_locale(pTHX_ const char* a, const char* b, I32 len)
+PERL_CALLCONV I32 Perl_ibcmp_locale(const char* a, const char* b, I32 len)
__attribute__pure__
- __attribute__nonnull__(pTHX_1)
- __attribute__nonnull__(pTHX_2);
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2);
#define PERL_ARGS_ASSERT_IBCMP_LOCALE \
assert(a); assert(b)
#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 \
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)
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__;
__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)
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 \
#define PERL_ARGS_ASSERT_MAGIC_CLEARHINT \
assert(sv); assert(mg)
-PERL_CALLCONV int Perl_magic_clearisa(pTHX_ SV* sv, MAGIC* 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_CLEARISA \
+#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 \
+ assert(mg)
+
PERL_CALLCONV int Perl_magic_clearpack(pTHX_ SV* sv, MAGIC* mg)
__attribute__nonnull__(pTHX_1)
__attribute__nonnull__(pTHX_2);
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)
#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)
#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 \
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 \
__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__
__attribute__malloc__
__attribute__warn_unused_result__;
-PERL_CALLCONV SV* Perl_newRV(pTHX_ SV* sv)
+PERL_CALLCONV SV* Perl_newRV(pTHX_ SV *const sv)
__attribute__malloc__
__attribute__warn_unused_result__
__attribute__nonnull__(pTHX_1);
#define PERL_ARGS_ASSERT_NEWRV \
assert(sv)
-PERL_CALLCONV SV* Perl_newRV_noinc(pTHX_ SV* sv)
+PERL_CALLCONV SV* Perl_newRV_noinc(pTHX_ SV *const sv)
__attribute__malloc__
__attribute__warn_unused_result__
__attribute__nonnull__(pTHX_1);
#define PERL_ARGS_ASSERT_NEWSVOP \
assert(sv)
-PERL_CALLCONV SV* Perl_newSViv(pTHX_ IV i)
+PERL_CALLCONV SV* Perl_newSViv(pTHX_ const IV i)
__attribute__malloc__
__attribute__warn_unused_result__;
-PERL_CALLCONV SV* Perl_newSVuv(pTHX_ UV u)
+PERL_CALLCONV SV* Perl_newSVuv(pTHX_ const UV u)
__attribute__malloc__
__attribute__warn_unused_result__;
-PERL_CALLCONV SV* Perl_newSVnv(pTHX_ NV n)
+PERL_CALLCONV SV* Perl_newSVnv(pTHX_ const NV n)
__attribute__malloc__
__attribute__warn_unused_result__;
-PERL_CALLCONV SV* Perl_newSVpv(pTHX_ const char* s, STRLEN len)
+PERL_CALLCONV SV* Perl_newSVpv(pTHX_ const char *const s, const STRLEN len)
__attribute__malloc__
__attribute__warn_unused_result__;
-PERL_CALLCONV SV* Perl_newSVpvn(pTHX_ const char* s, STRLEN len)
+PERL_CALLCONV SV* Perl_newSVpvn(pTHX_ const char *const s, const STRLEN len)
__attribute__malloc__
__attribute__warn_unused_result__;
-PERL_CALLCONV SV* Perl_newSVpvn_flags(pTHX_ const char* s, STRLEN len, U32 flags)
+PERL_CALLCONV SV* Perl_newSVpvn_flags(pTHX_ const char *const s, const STRLEN len, const U32 flags)
__attribute__malloc__
__attribute__warn_unused_result__;
-PERL_CALLCONV SV* Perl_newSVhek(pTHX_ const HEK *hek)
+PERL_CALLCONV SV* Perl_newSVhek(pTHX_ const HEK *const hek)
__attribute__malloc__
__attribute__warn_unused_result__;
__attribute__malloc__
__attribute__warn_unused_result__;
-PERL_CALLCONV SV* Perl_newSVpvf(pTHX_ const char* pat, ...)
+PERL_CALLCONV SV* Perl_newSVpvf(pTHX_ const char *const pat, ...)
__attribute__malloc__
__attribute__warn_unused_result__
__attribute__format__(__printf__,pTHX_1,pTHX_2)
#define PERL_ARGS_ASSERT_NEWSVPVF \
assert(pat)
-PERL_CALLCONV SV* Perl_vnewSVpvf(pTHX_ const char* pat, va_list* args)
+PERL_CALLCONV SV* Perl_vnewSVpvf(pTHX_ const char *const pat, va_list *const args)
__attribute__malloc__
__attribute__warn_unused_result__
__attribute__nonnull__(pTHX_1);
#define PERL_ARGS_ASSERT_VNEWSVPVF \
assert(pat)
-PERL_CALLCONV SV* Perl_newSVrv(pTHX_ SV* rv, const char* classname)
+PERL_CALLCONV SV* Perl_newSVrv(pTHX_ SV *const rv, const char *const classname)
__attribute__nonnull__(pTHX_1);
#define PERL_ARGS_ASSERT_NEWSVRV \
assert(rv)
-PERL_CALLCONV SV* Perl_newSVsv(pTHX_ SV* old)
+PERL_CALLCONV SV* Perl_newSVsv(pTHX_ SV *const old)
__attribute__malloc__
__attribute__warn_unused_result__;
#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)
-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)
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)
#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)
#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);
#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 \
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)
#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)
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);
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);
#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 \
+ 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 \
#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)
#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)
#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 \
#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 \
#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);
#define PERL_ARGS_ASSERT_SV_2BOOL \
assert(sv)
-PERL_CALLCONV CV* Perl_sv_2cv(pTHX_ SV* sv, HV** st, GV** gvp, I32 lref)
+PERL_CALLCONV CV* Perl_sv_2cv(pTHX_ SV* sv, HV **const st, GV **const gvp, const I32 lref)
__attribute__nonnull__(pTHX_2)
__attribute__nonnull__(pTHX_3);
#define PERL_ARGS_ASSERT_SV_2CV \
assert(st); assert(gvp)
-PERL_CALLCONV IO* Perl_sv_2io(pTHX_ SV* sv)
+PERL_CALLCONV IO* Perl_sv_2io(pTHX_ SV *const sv)
__attribute__nonnull__(pTHX_1);
#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);
-PERL_CALLCONV SV* Perl_sv_2mortal(pTHX_ SV* sv);
+PERL_CALLCONV SV* Perl_sv_2mortal(pTHX_ SV *const sv);
PERL_CALLCONV NV Perl_sv_2nv(pTHX_ SV *const sv);
PERL_CALLCONV SV* Perl_sv_2num(pTHX_ SV *const sv)
__attribute__nonnull__(pTHX_1);
#define PERL_ARGS_ASSERT_SV_PVBYTEN \
assert(sv); assert(lp)
-PERL_CALLCONV I32 Perl_sv_true(pTHX_ SV *sv);
-PERL_CALLCONV void Perl_sv_add_arena(pTHX_ char *const ptr, const U32 size, const U32 flags)
+PERL_CALLCONV I32 Perl_sv_true(pTHX_ SV *const sv);
+#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 \
assert(sv)
-PERL_CALLCONV SV* Perl_sv_bless(pTHX_ SV* sv, HV* stash)
+PERL_CALLCONV SV* Perl_sv_bless(pTHX_ SV *const sv, HV *const stash)
__attribute__nonnull__(pTHX_1)
__attribute__nonnull__(pTHX_2);
#define PERL_ARGS_ASSERT_SV_BLESS \
assert(sv); assert(stash)
-PERL_CALLCONV void Perl_sv_catpvf(pTHX_ SV* sv, const char* pat, ...)
+PERL_CALLCONV void Perl_sv_catpvf(pTHX_ SV *const sv, const char *const pat, ...)
__attribute__format__(__printf__,pTHX_2,pTHX_3)
__attribute__nonnull__(pTHX_1)
__attribute__nonnull__(pTHX_2);
#define PERL_ARGS_ASSERT_SV_CATPVF \
assert(sv); assert(pat)
-PERL_CALLCONV void Perl_sv_vcatpvf(pTHX_ SV* sv, const char* pat, va_list* args)
+PERL_CALLCONV void Perl_sv_vcatpvf(pTHX_ SV *const sv, const char *const pat, va_list *const args)
__attribute__nonnull__(pTHX_1)
__attribute__nonnull__(pTHX_2);
#define PERL_ARGS_ASSERT_SV_VCATPVF \
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 int Perl_sv_isa(pTHX_ SV* sv, const char* name)
+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 \
assert(name)
#define PERL_ARGS_ASSERT_SV_PVN_FORCE \
assert(sv)
-PERL_CALLCONV char* Perl_sv_pvutf8n_force(pTHX_ SV* sv, STRLEN* lp)
+PERL_CALLCONV char* Perl_sv_pvutf8n_force(pTHX_ SV *const sv, STRLEN *const lp)
__attribute__nonnull__(pTHX_1);
#define PERL_ARGS_ASSERT_SV_PVUTF8N_FORCE \
assert(sv)
-PERL_CALLCONV char* Perl_sv_pvbyten_force(pTHX_ SV* sv, STRLEN* lp)
+PERL_CALLCONV char* Perl_sv_pvbyten_force(pTHX_ SV *const sv, STRLEN *const lp)
__attribute__nonnull__(pTHX_1);
#define PERL_ARGS_ASSERT_SV_PVBYTEN_FORCE \
assert(sv)
#define PERL_ARGS_ASSERT_SV_CAT_DECODE \
assert(dsv); assert(encoding); assert(ssv); assert(offset); assert(tstr)
-PERL_CALLCONV const char* Perl_sv_reftype(pTHX_ const SV* sv, int ob)
+PERL_CALLCONV const char* Perl_sv_reftype(pTHX_ const SV *const sv, const int ob)
__attribute__warn_unused_result__
__attribute__nonnull__(pTHX_1);
#define PERL_ARGS_ASSERT_SV_REFTYPE \
assert(sv); assert(nsv)
PERL_CALLCONV void Perl_sv_report_used(pTHX);
-PERL_CALLCONV void Perl_sv_reset(pTHX_ const char* s, HV* stash)
+PERL_CALLCONV void Perl_sv_reset(pTHX_ const char* s, HV *const stash)
__attribute__nonnull__(pTHX_1);
#define PERL_ARGS_ASSERT_SV_RESET \
assert(s)
-PERL_CALLCONV void Perl_sv_setpvf(pTHX_ SV* sv, const char* pat, ...)
+PERL_CALLCONV void Perl_sv_setpvf(pTHX_ SV *const sv, const char *const pat, ...)
__attribute__format__(__printf__,pTHX_2,pTHX_3)
__attribute__nonnull__(pTHX_1)
__attribute__nonnull__(pTHX_2);
#define PERL_ARGS_ASSERT_SV_SETPVF \
assert(sv); assert(pat)
-PERL_CALLCONV void Perl_sv_vsetpvf(pTHX_ SV* sv, const char* pat, va_list* args)
+PERL_CALLCONV void Perl_sv_vsetpvf(pTHX_ SV *const sv, const char *const pat, va_list *const args)
__attribute__nonnull__(pTHX_1)
__attribute__nonnull__(pTHX_2);
#define PERL_ARGS_ASSERT_SV_VSETPVF \
#define PERL_ARGS_ASSERT_SV_SETIV \
assert(sv)
-PERL_CALLCONV void Perl_sv_setpviv(pTHX_ SV* sv, IV num)
+PERL_CALLCONV void Perl_sv_setpviv(pTHX_ SV *const sv, const IV num)
__attribute__nonnull__(pTHX_1);
#define PERL_ARGS_ASSERT_SV_SETPVIV \
assert(sv)
#define PERL_ARGS_ASSERT_SV_SETNV \
assert(sv)
-PERL_CALLCONV SV* Perl_sv_setref_iv(pTHX_ SV* rv, const char* classname, IV iv)
+PERL_CALLCONV SV* Perl_sv_setref_iv(pTHX_ SV *const rv, const char *const classname, const IV iv)
__attribute__nonnull__(pTHX_1);
#define PERL_ARGS_ASSERT_SV_SETREF_IV \
assert(rv)
-PERL_CALLCONV SV* Perl_sv_setref_uv(pTHX_ SV* rv, const char* classname, UV uv)
+PERL_CALLCONV SV* Perl_sv_setref_uv(pTHX_ SV *const rv, const char *const classname, const UV uv)
__attribute__nonnull__(pTHX_1);
#define PERL_ARGS_ASSERT_SV_SETREF_UV \
assert(rv)
-PERL_CALLCONV SV* Perl_sv_setref_nv(pTHX_ SV* rv, const char* classname, NV nv)
+PERL_CALLCONV SV* Perl_sv_setref_nv(pTHX_ SV *const rv, const char *const classname, const NV nv)
__attribute__nonnull__(pTHX_1);
#define PERL_ARGS_ASSERT_SV_SETREF_NV \
assert(rv)
-PERL_CALLCONV SV* Perl_sv_setref_pv(pTHX_ SV* rv, const char* classname, void* pv)
+PERL_CALLCONV SV* Perl_sv_setref_pv(pTHX_ SV *const rv, const char *const classname, void *const pv)
__attribute__nonnull__(pTHX_1);
#define PERL_ARGS_ASSERT_SV_SETREF_PV \
assert(rv)
-PERL_CALLCONV SV* Perl_sv_setref_pvn(pTHX_ SV* rv, const char* classname, const char* pv, STRLEN n)
+PERL_CALLCONV SV* Perl_sv_setref_pvn(pTHX_ SV *const rv, const char *const classname, const char *const pv, const STRLEN n)
__attribute__nonnull__(pTHX_1)
__attribute__nonnull__(pTHX_3);
#define PERL_ARGS_ASSERT_SV_SETREF_PVN \
#define PERL_ARGS_ASSERT_SV_TAINT \
assert(sv)
-PERL_CALLCONV bool Perl_sv_tainted(pTHX_ SV* sv)
+PERL_CALLCONV bool Perl_sv_tainted(pTHX_ SV *const sv)
__attribute__warn_unused_result__
__attribute__nonnull__(pTHX_1);
#define PERL_ARGS_ASSERT_SV_TAINTED \
#define PERL_ARGS_ASSERT_SV_UNREF \
assert(sv)
-PERL_CALLCONV void Perl_sv_unref_flags(pTHX_ SV *ref, U32 flags)
+PERL_CALLCONV void Perl_sv_unref_flags(pTHX_ SV *const ref, const U32 flags)
__attribute__nonnull__(pTHX_1);
#define PERL_ARGS_ASSERT_SV_UNREF_FLAGS \
assert(ref)
-PERL_CALLCONV void Perl_sv_untaint(pTHX_ SV* sv)
+PERL_CALLCONV void Perl_sv_untaint(pTHX_ SV *const sv)
__attribute__nonnull__(pTHX_1);
#define PERL_ARGS_ASSERT_SV_UNTAINT \
assert(sv)
#define PERL_ARGS_ASSERT_SV_USEPVN_FLAGS \
assert(sv)
-PERL_CALLCONV void Perl_sv_vcatpvfn(pTHX_ SV* sv, const char* pat, STRLEN patlen, va_list* args, SV** svargs, I32 svmax, bool *maybe_tainted)
+PERL_CALLCONV void Perl_sv_vcatpvfn(pTHX_ SV *const sv, const char *const pat, const STRLEN patlen, va_list *const args, SV **const svargs, const I32 svmax, bool *const maybe_tainted)
__attribute__nonnull__(pTHX_1)
__attribute__nonnull__(pTHX_2);
#define PERL_ARGS_ASSERT_SV_VCATPVFN \
assert(sv); assert(pat)
-PERL_CALLCONV void Perl_sv_vsetpvfn(pTHX_ SV* sv, const char* pat, STRLEN patlen, va_list* args, SV** svargs, I32 svmax, bool *maybe_tainted)
+PERL_CALLCONV void Perl_sv_vsetpvfn(pTHX_ SV *const sv, const char *const pat, const STRLEN patlen, va_list *const args, SV **const svargs, const I32 svmax, bool *const maybe_tainted)
__attribute__nonnull__(pTHX_1)
__attribute__nonnull__(pTHX_2);
#define PERL_ARGS_ASSERT_SV_VSETPVFN \
__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);
#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);
#endif
PERL_CALLCONV int Perl_runops_standard(pTHX);
PERL_CALLCONV int Perl_runops_debug(pTHX);
-PERL_CALLCONV void Perl_sv_catpvf_mg(pTHX_ SV *sv, const char* pat, ...)
+PERL_CALLCONV void Perl_sv_catpvf_mg(pTHX_ SV *const sv, const char *const pat, ...)
__attribute__format__(__printf__,pTHX_2,pTHX_3)
__attribute__nonnull__(pTHX_1)
__attribute__nonnull__(pTHX_2);
#define PERL_ARGS_ASSERT_SV_CATPVF_MG \
assert(sv); assert(pat)
-PERL_CALLCONV void Perl_sv_vcatpvf_mg(pTHX_ SV* sv, const char* pat, va_list* args)
+PERL_CALLCONV void Perl_sv_vcatpvf_mg(pTHX_ SV *const sv, const char *const pat, va_list *const args)
__attribute__nonnull__(pTHX_1)
__attribute__nonnull__(pTHX_2);
#define PERL_ARGS_ASSERT_SV_VCATPVF_MG \
#define PERL_ARGS_ASSERT_SV_CATSV_MG \
assert(dsv)
-PERL_CALLCONV void Perl_sv_setpvf_mg(pTHX_ SV *sv, const char* pat, ...)
+PERL_CALLCONV void Perl_sv_setpvf_mg(pTHX_ SV *const sv, const char *const pat, ...)
__attribute__format__(__printf__,pTHX_2,pTHX_3)
__attribute__nonnull__(pTHX_1)
__attribute__nonnull__(pTHX_2);
#define PERL_ARGS_ASSERT_SV_SETPVF_MG \
assert(sv); assert(pat)
-PERL_CALLCONV void Perl_sv_vsetpvf_mg(pTHX_ SV* sv, const char* pat, va_list* args)
+PERL_CALLCONV void Perl_sv_vsetpvf_mg(pTHX_ SV *const sv, const char *const pat, va_list *const args)
__attribute__nonnull__(pTHX_1)
__attribute__nonnull__(pTHX_2);
#define PERL_ARGS_ASSERT_SV_VSETPVF_MG \
#define PERL_ARGS_ASSERT_SV_SETIV_MG \
assert(sv)
-PERL_CALLCONV void Perl_sv_setpviv_mg(pTHX_ SV *sv, IV iv)
+PERL_CALLCONV void Perl_sv_setpviv_mg(pTHX_ SV *const sv, const IV iv)
__attribute__nonnull__(pTHX_1);
#define PERL_ARGS_ASSERT_SV_SETPVIV_MG \
assert(sv)
#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 \
#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__
#define PERL_ARGS_ASSERT_RE_DUP_GUTS \
assert(sstr); assert(dstr); assert(param)
-PERL_CALLCONV PerlIO* Perl_fp_dup(pTHX_ PerlIO* fp, char type, CLONE_PARAMS* param)
+PERL_CALLCONV PerlIO* Perl_fp_dup(pTHX_ PerlIO *const fp, const char type, CLONE_PARAMS *const param)
__attribute__nonnull__(pTHX_3);
#define PERL_ARGS_ASSERT_FP_DUP \
assert(param)
-PERL_CALLCONV DIR* Perl_dirp_dup(pTHX_ DIR* dp)
+PERL_CALLCONV DIR* Perl_dirp_dup(pTHX_ DIR *const dp)
__attribute__warn_unused_result__;
-PERL_CALLCONV GP* Perl_gp_dup(pTHX_ GP* gp, CLONE_PARAMS* param)
+PERL_CALLCONV GP* Perl_gp_dup(pTHX_ GP *const gp, CLONE_PARAMS *const param)
__attribute__warn_unused_result__
__attribute__nonnull__(pTHX_2);
#define PERL_ARGS_ASSERT_GP_DUP \
assert(param)
-PERL_CALLCONV MAGIC* Perl_mg_dup(pTHX_ MAGIC* mg, CLONE_PARAMS* param)
+PERL_CALLCONV MAGIC* Perl_mg_dup(pTHX_ MAGIC *mg, CLONE_PARAMS *const param)
__attribute__warn_unused_result__
__attribute__nonnull__(pTHX_2);
#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);
#define PERL_ARGS_ASSERT_RVPV_DUP \
assert(dstr); assert(sstr); assert(param)
-PERL_CALLCONV yy_parser* Perl_parser_dup(pTHX_ const yy_parser *proto, CLONE_PARAMS* param)
+PERL_CALLCONV yy_parser* Perl_parser_dup(pTHX_ const yy_parser *const proto, CLONE_PARAMS *const param)
__attribute__nonnull__(pTHX_2);
#define PERL_ARGS_ASSERT_PARSER_DUP \
assert(param)
__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)
#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__;
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)
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);
#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
#if defined(PERL_IN_PP_C) || defined(PERL_DECL_PROT)
+STATIC OP* S_do_delete_local(pTHX);
STATIC SV* S_refto(pTHX_ SV* sv)
__attribute__warn_unused_result__
__attribute__nonnull__(pTHX_1);
#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)
#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 \
#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)
#define PERL_ARGS_ASSERT_UIV_2BUF \
assert(buf); assert(peob)
-STATIC void S_sv_unglob(pTHX_ SV* sv)
+STATIC void S_sv_unglob(pTHX_ SV *const sv)
__attribute__nonnull__(pTHX_1);
#define PERL_ARGS_ASSERT_SV_UNGLOB \
assert(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
# endif
# endif
-STATIC I32 S_expect_number(pTHX_ char** pattern)
+STATIC I32 S_expect_number(pTHX_ char **const pattern)
__attribute__warn_unused_result__
__attribute__nonnull__(pTHX_1);
#define PERL_ARGS_ASSERT_EXPECT_NUMBER \
#define PERL_ARGS_ASSERT_SV_POS_B2U_MIDWAY \
assert(s); assert(target); assert(end)
-STATIC char * S_F0convert(NV nv, char *endbuf, STRLEN *len)
+STATIC char * S_F0convert(NV nv, char *const endbuf, STRLEN *const len)
__attribute__nonnull__(2)
__attribute__nonnull__(3);
#define PERL_ARGS_ASSERT_F0CONVERT \
#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 \
#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
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)
#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* sv, STRLEN* lp, I32 flags)
+PERL_CALLCONV char* Perl_sv_pvn_force_flags(pTHX_ SV *const sv, STRLEN *const lp, const I32 flags)
__attribute__nonnull__(pTHX_1);
#define PERL_ARGS_ASSERT_SV_PVN_FORCE_FLAGS \
assert(sv)
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
#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 \
#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 \
#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
#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)
#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
PERL_CALLCONV bool Perl_ckwarn(pTHX_ U32 w);
PERL_CALLCONV bool Perl_ckwarn_d(pTHX_ U32 w);
#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)
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 \
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)
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