From a8530b8814e6298c258ed2b0c4fa287b54c30cb6 Mon Sep 17 00:00:00 2001 From: Karl Williamson Date: Tue, 29 Oct 2024 15:23:55 -0600 Subject: [PATCH] Move Perl_hv_* mathoms functions to macros in hv.h --- embed.fnc | 28 +++++------ embed.h | 14 ++++++ hv.h | 48 +++++++++---------- mathoms.c | 139 ------------------------------------------------------ proto.h | 103 ++++++++++++++++------------------------ 5 files changed, 93 insertions(+), 239 deletions(-) diff --git a/embed.fnc b/embed.fnc index 634835c76795..72eb1b091596 100644 --- a/embed.fnc +++ b/embed.fnc @@ -1490,11 +1490,11 @@ ARdp |HV * |hv_copy_hints_hv \ Cp |void |hv_delayfree_ent \ |NULLOK HV *notused \ |NULLOK HE *entry -AMbdp |SV * |hv_delete |NULLOK HV *hv \ +Admp |SV * |hv_delete |NULLOK HV *hv \ |NN const char *key \ |I32 klen \ |I32 flags -AMbdp |SV * |hv_delete_ent |NULLOK HV *hv \ +Admp |SV * |hv_delete_ent |NULLOK HV *hv \ |NN SV *keysv \ |I32 flags \ |U32 hash @@ -1510,17 +1510,17 @@ dp |void |hv_ename_delete|NN HV *hv \ |NN const char *name \ |U32 len \ |U32 flags -AMRbdp |bool |hv_exists |NULLOK HV *hv \ +ARdmp |bool |hv_exists |NULLOK HV *hv \ |NN const char *key \ |I32 klen -AMRbdp |bool |hv_exists_ent |NULLOK HV *hv \ +ARdmp |bool |hv_exists_ent |NULLOK HV *hv \ |NN SV *keysv \ |U32 hash -AMbdp |SV ** |hv_fetch |NULLOK HV *hv \ +Admp |SV ** |hv_fetch |NULLOK HV *hv \ |NN const char *key \ |I32 klen \ |I32 lval -AMbdp |HE * |hv_fetch_ent |NULLOK HV *hv \ +Admp |HE * |hv_fetch_ent |NULLOK HV *hv \ |NN SV *keysv \ |I32 lval \ |U32 hash @@ -1531,7 +1531,7 @@ Adp |I32 |hv_iterinit |NN HV *hv ARdp |char * |hv_iterkey |NN HE *entry \ |NN I32 *retlen ARdp |SV * |hv_iterkeysv |NN HE *entry -AMRbdp |HE * |hv_iternext |NN HV *hv +Admp |HE * |hv_iternext |NN HV *hv ARdpx |HE * |hv_iternext_flags \ |NN HV *hv \ |I32 flags @@ -1542,7 +1542,7 @@ ARdp |SV * |hv_iterval |NN HV *hv \ |NN HE *entry Adp |void |hv_ksplit |NN HV *hv \ |IV newmax -AMbdp |void |hv_magic |NN HV *hv \ +Admp |void |hv_magic |NN HV *hv \ |NULLOK GV *gv \ |int how Adp |void |hv_name_set |NN HV *hv \ @@ -1565,25 +1565,25 @@ Cdop |void |hv_riter_set |NN HV *hv \ |I32 riter ARdp |SV * |hv_scalar |NN HV *hv -AMbdp |SV ** |hv_store |NULLOK HV *hv \ +Admp |SV ** |hv_store |NULLOK HV *hv \ |NULLOK const char *key \ |I32 klen \ |NULLOK SV *val \ |U32 hash -AMbdp |HE * |hv_store_ent |NULLOK HV *hv \ +Admp |HE * |hv_store_ent |NULLOK HV *hv \ |NULLOK SV *key \ |NULLOK SV *val \ |U32 hash -AMbpx |SV ** |hv_store_flags |NULLOK HV *hv \ +Ampx |SV ** |hv_store_flags |NULLOK HV *hv \ |NULLOK const char *key \ |I32 klen \ |NULLOK SV *val \ |U32 hash \ |int flags -Adm |SV ** |hv_stores |NULLOK HV *hv \ +Admp |SV ** |hv_stores |NULLOK HV *hv \ |"key" \ |NULLOK SV *val -Adm |void |hv_undef |NULLOK HV *hv +Admp |void |hv_undef |NULLOK HV *hv Xop |void |hv_undef_flags |NULLOK HV *hv \ |U32 flags APdm |I32 |ibcmp |NN const char *a \ @@ -2206,7 +2206,7 @@ ARdp |OP * |newGVOP |I32 type \ |NN GV *gv ARdp |OP * |newGVREF |I32 type \ |NULLOK OP *o -AMRbdp |HV * |newHV +ARdmp |HV * |newHV ARdp |HV * |newHVhv |NULLOK HV *hv ARdp |OP * |newHVREF |NN OP *o AMRbdp |IO * |newIO diff --git a/embed.h b/embed.h index 0836a086cf4d..481819ae7d18 100644 --- a/embed.h +++ b/embed.h @@ -292,18 +292,31 @@ # define hv_common_key_len(a,b,c,d,e,f) Perl_hv_common_key_len(aTHX_ a,b,c,d,e,f) # define hv_copy_hints_hv(a) Perl_hv_copy_hints_hv(aTHX_ a) # define hv_delayfree_ent(a,b) Perl_hv_delayfree_ent(aTHX_ a,b) +# define hv_delete(a,b,c,d) Perl_hv_delete(aTHX,a,b,c,d) +# define hv_delete_ent(a,b,c,d) Perl_hv_delete_ent(aTHX,a,b,c,d) # define hv_dump(a) Perl_hv_dump(aTHX_ a) +# define hv_exists(a,b,c) Perl_hv_exists(aTHX,a,b,c) +# define hv_exists_ent(a,b,c) Perl_hv_exists_ent(aTHX,a,b,c) +# define hv_fetch(a,b,c,d) Perl_hv_fetch(aTHX,a,b,c,d) +# define hv_fetch_ent(a,b,c,d) Perl_hv_fetch_ent(aTHX,a,b,c,d) # define hv_free_ent(a,b) Perl_hv_free_ent(aTHX_ a,b) # define hv_iterinit(a) Perl_hv_iterinit(aTHX_ a) # define hv_iterkey(a,b) Perl_hv_iterkey(aTHX_ a,b) # define hv_iterkeysv(a) Perl_hv_iterkeysv(aTHX_ a) +# define hv_iternext(a) Perl_hv_iternext(aTHX,a) # define hv_iternext_flags(a,b) Perl_hv_iternext_flags(aTHX_ a,b) # define hv_iternextsv(a,b,c) Perl_hv_iternextsv(aTHX_ a,b,c) # define hv_iterval(a,b) Perl_hv_iterval(aTHX_ a,b) # define hv_ksplit(a,b) Perl_hv_ksplit(aTHX_ a,b) +# define hv_magic(a,b,c) Perl_hv_magic(aTHX,a,b,c) # define hv_name_set(a,b,c,d) Perl_hv_name_set(aTHX_ a,b,c,d) # define hv_rand_set(a,b) Perl_hv_rand_set(aTHX_ a,b) # define hv_scalar(a) Perl_hv_scalar(aTHX_ a) +# define hv_store(a,b,c,d,e) Perl_hv_store(aTHX,a,b,c,d,e) +# define hv_store_ent(a,b,c,d) Perl_hv_store_ent(aTHX,a,b,c,d) +# define hv_store_flags(a,b,c,d,e,f) Perl_hv_store_flags(aTHX,a,b,c,d,e,f) +# define hv_stores(a,b,c) Perl_hv_stores(aTHX,a,b,c) +# define hv_undef(a) Perl_hv_undef(aTHX,a) # define init_i18nl10n(a) Perl_init_i18nl10n(aTHX_ a) # define init_stacks() Perl_init_stacks(aTHX) # define init_tm(a) Perl_init_tm(aTHX_ a) @@ -400,6 +413,7 @@ # define newGVOP(a,b,c) Perl_newGVOP(aTHX_ a,b,c) # define newGVREF(a,b) Perl_newGVREF(aTHX_ a,b) # define newGVgen_flags(a,b) Perl_newGVgen_flags(aTHX_ a,b) +# define newHV() Perl_newHV(aTHX) # define newHVREF(a) Perl_newHVREF(aTHX_ a) # define newHVhv(a) Perl_newHVhv(aTHX_ a) # define newLISTOP(a,b,c,d) Perl_newLISTOP(aTHX_ a,b,c,d) diff --git a/hv.h b/hv.h index a6319cd60af5..a89896d51e9c 100644 --- a/hv.h +++ b/hv.h @@ -513,9 +513,9 @@ whether it is valid to call C. /* Flags for hv_iternext_flags. */ #define HV_ITERNEXT_WANTPLACEHOLDERS 0x01 /* Don't skip placeholders. */ -#define hv_iternext(hv) hv_iternext_flags(hv, 0) -#define hv_magic(hv, gv, how) sv_magic(MUTABLE_SV(hv), MUTABLE_SV(gv), how, NULL, 0) -#define hv_undef(hv) Perl_hv_undef_flags(aTHX_ hv, 0) +#define Perl_hv_iternext(mTHX, hv) Perl_hv_iternext_flags(aTHX_ hv, 0) +#define Perl_hv_magic(mTHX, hv, gv, how) Perl_sv_magic(aTHX_ MUTABLE_SV(hv), MUTABLE_SV(gv), how, NULL, 0) +#define Perl_hv_undef(mTHX, hv) Perl_hv_undef_flags(aTHX_ hv, 0) #define Perl_sharepvn(pv, len, hash) HEK_KEY(share_hek(pv, len, hash)) #define sharepvn(pv, len, hash) Perl_sharepvn(pv, len, hash) @@ -527,41 +527,41 @@ whether it is valid to call C. ->shared_he_he.he_valu.hent_refcount), \ hek) -#define hv_store_ent(hv, keysv, val, hash) \ - ((HE *) hv_common((hv), (keysv), NULL, 0, 0, HV_FETCH_ISSTORE, \ +#define Perl_hv_store_ent(mTHX, hv, keysv, val, hash) \ + ((HE *) Perl_hv_common(aTHX_ (hv), (keysv), NULL, 0, 0, HV_FETCH_ISSTORE, \ (val), (hash))) -#define hv_exists_ent(hv, keysv, hash) \ - cBOOL(hv_common((hv), (keysv), NULL, 0, 0, HV_FETCH_ISEXISTS, 0, (hash))) -#define hv_fetch_ent(hv, keysv, lval, hash) \ - ((HE *) hv_common((hv), (keysv), NULL, 0, 0, \ +#define Perl_hv_exists_ent(mTHX, hv, keysv, hash) \ + cBOOL(Perl_hv_common(aTHX_ (hv), (keysv), NULL, 0, 0, HV_FETCH_ISEXISTS, 0, (hash))) +#define Perl_hv_fetch_ent(mTHX, hv, keysv, lval, hash) \ + ((HE *) Perl_hv_common(aTHX_ (hv), (keysv), NULL, 0, 0, \ ((lval) ? HV_FETCH_LVALUE : 0), NULL, (hash))) -#define hv_delete_ent(hv, key, flags, hash) \ - (MUTABLE_SV(hv_common((hv), (key), NULL, 0, 0, (flags) | HV_DELETE, \ +#define Perl_hv_delete_ent(mTHX, hv, key, flags, hash) \ + (MUTABLE_SV(Perl_hv_common(aTHX_ (hv), (key), NULL, 0, 0, (flags) | HV_DELETE, \ NULL, (hash)))) -#define hv_store_flags(hv, key, klen, val, hash, flags) \ - ((SV**) hv_common((hv), NULL, (key), (klen), (flags), \ +#define Perl_hv_store_flags(mTHX, hv, key, klen, val, hash, flags) \ + ((SV**) Perl_hv_common(aTHX_ (hv), NULL, (key), (klen), (flags), \ (HV_FETCH_ISSTORE|HV_FETCH_JUST_SV), (val), \ (hash))) -#define hv_store(hv, key, klen, val, hash) \ - ((SV**) hv_common_key_len((hv), (key), (klen), \ +#define Perl_hv_store(mTHX, hv, key, klen, val, hash) \ + ((SV**) Perl_hv_common_key_len(aTHX_ (hv), (key), (klen), \ (HV_FETCH_ISSTORE|HV_FETCH_JUST_SV), \ (val), (hash))) -#define hv_exists(hv, key, klen) \ - cBOOL(hv_common_key_len((hv), (key), (klen), HV_FETCH_ISEXISTS, NULL, 0)) +#define Perl_hv_exists(mTHX, hv, key, klen) \ + cBOOL(Perl_hv_common_key_len(aTHX_ (hv), (key), (klen), HV_FETCH_ISEXISTS, NULL, 0)) -#define hv_fetch(hv, key, klen, lval) \ - ((SV**) hv_common_key_len((hv), (key), (klen), (lval) \ +#define Perl_hv_fetch(mTHX, hv, key, klen, lval) \ + ((SV**) Perl_hv_common_key_len(aTHX_ (hv), (key), (klen), (lval) \ ? (HV_FETCH_JUST_SV | HV_FETCH_LVALUE) \ : HV_FETCH_JUST_SV, NULL, 0)) -#define hv_delete(hv, key, klen, flags) \ - (MUTABLE_SV(hv_common_key_len((hv), (key), (klen), \ +#define Perl_hv_delete(mTHX, hv, key, klen, flags) \ + (MUTABLE_SV(Perl_hv_common_key_len(aTHX_ (hv), (key), (klen), \ (flags) | HV_DELETE, NULL, 0))) /* Provide 's' suffix subs for constant strings (and avoid needing to count @@ -590,8 +590,8 @@ whether it is valid to call C. #define hv_name_sets(hv, name, flags) \ hv_name_set((hv),ASSERT_IS_LITERAL(name),(sizeof(name)-1), flags) -#define hv_stores(hv, key, val) \ - hv_store((hv), ASSERT_IS_LITERAL(key), (sizeof(key)-1), (val), 0) +#define Perl_hv_stores(mTHX, hv, key, val) \ + Perl_hv_store(aTHX, (hv), ASSERT_IS_LITERAL(key), (sizeof(key)-1), (val), 0) #ifdef PERL_CORE # define hv_storehek(hv, hek, val) \ @@ -731,7 +731,7 @@ Creates a new HV. The reference count is set to 1. =cut */ -#define newHV() MUTABLE_HV(newSV_type(SVt_PVHV)) +#define Perl_newHV(mTHX) MUTABLE_HV(Perl_newSV_type(aTHX_ SVt_PVHV)) #include "hv_func.h" diff --git a/mathoms.c b/mathoms.c index 316e0e84665a..a10b537b3df4 100644 --- a/mathoms.c +++ b/mathoms.c @@ -401,22 +401,6 @@ Perl_gv_fetchmethod(pTHX_ HV *stash, const char *name) return gv_fetchmethod_autoload(stash, name, TRUE); } -HE * -Perl_hv_iternext(pTHX_ HV *hv) -{ - PERL_ARGS_ASSERT_HV_ITERNEXT; - - return hv_iternext_flags(hv, 0); -} - -void -Perl_hv_magic(pTHX_ HV *hv, GV *gv, int how) -{ - PERL_ARGS_ASSERT_HV_MAGIC; - - sv_magic(MUTABLE_SV(hv), MUTABLE_SV(gv), how, NULL, 0); -} - bool Perl_do_open(pTHX_ GV *gv, const char *name, I32 len, int as_raw, int rawmode, int rawperm, PerlIO *supplied_fp) @@ -499,120 +483,6 @@ Perl_sv_usepvn(pTHX_ SV *sv, char *ptr, STRLEN len) sv_usepvn_flags(sv,ptr,len, 0); } -HE * -Perl_hv_store_ent(pTHX_ HV *hv, SV *keysv, SV *val, U32 hash) -{ - return (HE *)hv_common(hv, keysv, NULL, 0, 0, HV_FETCH_ISSTORE, val, hash); -} - -bool -Perl_hv_exists_ent(pTHX_ HV *hv, SV *keysv, U32 hash) -{ - PERL_ARGS_ASSERT_HV_EXISTS_ENT; - - return cBOOL(hv_common(hv, keysv, NULL, 0, 0, HV_FETCH_ISEXISTS, 0, hash)); -} - -HE * -Perl_hv_fetch_ent(pTHX_ HV *hv, SV *keysv, I32 lval, U32 hash) -{ - PERL_ARGS_ASSERT_HV_FETCH_ENT; - - return (HE *)hv_common(hv, keysv, NULL, 0, 0, - (lval ? HV_FETCH_LVALUE : 0), NULL, hash); -} - -SV * -Perl_hv_delete_ent(pTHX_ HV *hv, SV *keysv, I32 flags, U32 hash) -{ - PERL_ARGS_ASSERT_HV_DELETE_ENT; - - return MUTABLE_SV(hv_common(hv, keysv, NULL, 0, 0, flags | HV_DELETE, NULL, - hash)); -} - -SV** -Perl_hv_store_flags(pTHX_ HV *hv, const char *key, I32 klen, SV *val, U32 hash, - int flags) -{ - return (SV**) hv_common(hv, NULL, key, klen, flags, - (HV_FETCH_ISSTORE|HV_FETCH_JUST_SV), val, hash); -} - -SV** -Perl_hv_store(pTHX_ HV *hv, const char *key, I32 klen_i32, SV *val, U32 hash) -{ - STRLEN klen; - int flags; - - if (klen_i32 < 0) { - klen = -klen_i32; - flags = HVhek_UTF8; - } else { - klen = klen_i32; - flags = 0; - } - return (SV **) hv_common(hv, NULL, key, klen, flags, - (HV_FETCH_ISSTORE|HV_FETCH_JUST_SV), val, hash); -} - -bool -Perl_hv_exists(pTHX_ HV *hv, const char *key, I32 klen_i32) -{ - STRLEN klen; - int flags; - - PERL_ARGS_ASSERT_HV_EXISTS; - - if (klen_i32 < 0) { - klen = -klen_i32; - flags = HVhek_UTF8; - } else { - klen = klen_i32; - flags = 0; - } - return cBOOL(hv_common(hv, NULL, key, klen, flags, HV_FETCH_ISEXISTS, 0, 0)); -} - -SV** -Perl_hv_fetch(pTHX_ HV *hv, const char *key, I32 klen_i32, I32 lval) -{ - STRLEN klen; - int flags; - - PERL_ARGS_ASSERT_HV_FETCH; - - if (klen_i32 < 0) { - klen = -klen_i32; - flags = HVhek_UTF8; - } else { - klen = klen_i32; - flags = 0; - } - return (SV **) hv_common(hv, NULL, key, klen, flags, - lval ? (HV_FETCH_JUST_SV | HV_FETCH_LVALUE) - : HV_FETCH_JUST_SV, NULL, 0); -} - -SV * -Perl_hv_delete(pTHX_ HV *hv, const char *key, I32 klen_i32, I32 flags) -{ - STRLEN klen; - int k_flags; - - PERL_ARGS_ASSERT_HV_DELETE; - - if (klen_i32 < 0) { - klen = -klen_i32; - k_flags = HVhek_UTF8; - } else { - klen = klen_i32; - k_flags = 0; - } - return MUTABLE_SV(hv_common(hv, NULL, key, klen, k_flags, flags | HV_DELETE, - NULL, 0)); -} - AV * Perl_newAV(pTHX) { @@ -623,15 +493,6 @@ Perl_newAV(pTHX) AvMAX(av) = AvFILLp(av) = -1; */ } -HV * -Perl_newHV(pTHX) -{ - HV * const hv = MUTABLE_HV(newSV_type(SVt_PVHV)); - assert(!SvOK(hv)); - - return hv; -} - void Perl_sv_insert(pTHX_ SV *const bigstr, const STRLEN offset, const STRLEN len, const char *const little, const STRLEN littlelen) diff --git a/proto.h b/proto.h index 6318430424e0..81a6752d6fe6 100644 --- a/proto.h +++ b/proto.h @@ -1593,6 +1593,12 @@ PERL_CALLCONV void Perl_hv_delayfree_ent(pTHX_ HV *notused, HE *entry); #define PERL_ARGS_ASSERT_HV_DELAYFREE_ENT +/* PERL_CALLCONV SV * +Perl_hv_delete(pTHX_ HV *hv, const char *key, I32 klen, I32 flags); */ + +/* PERL_CALLCONV SV * +Perl_hv_delete_ent(pTHX_ HV *hv, SV *keysv, I32 flags, U32 hash); */ + PERL_CALLCONV void Perl_hv_dump(pTHX_ HV *hv); #define PERL_ARGS_ASSERT_HV_DUMP @@ -1620,6 +1626,20 @@ Perl_hv_ename_delete(pTHX_ HV *hv, const char *name, U32 len, U32 flags) #define PERL_ARGS_ASSERT_HV_ENAME_DELETE \ assert(hv); assert(name); assert(SvTYPE(hv) == SVt_PVHV) +/* PERL_CALLCONV bool +Perl_hv_exists(pTHX_ HV *hv, const char *key, I32 klen) + __attribute__warn_unused_result__; */ + +/* PERL_CALLCONV bool +Perl_hv_exists_ent(pTHX_ HV *hv, SV *keysv, U32 hash) + __attribute__warn_unused_result__; */ + +/* PERL_CALLCONV SV ** +Perl_hv_fetch(pTHX_ HV *hv, const char *key, I32 klen, I32 lval); */ + +/* PERL_CALLCONV HE * +Perl_hv_fetch_ent(pTHX_ HV *hv, SV *keysv, I32 lval, U32 hash); */ + PERL_CALLCONV STRLEN Perl_hv_fill(pTHX_ HV * const hv); #define PERL_ARGS_ASSERT_HV_FILL \ @@ -1646,6 +1666,9 @@ Perl_hv_iterkeysv(pTHX_ HE *entry) #define PERL_ARGS_ASSERT_HV_ITERKEYSV \ assert(entry) +/* PERL_CALLCONV HE * +Perl_hv_iternext(pTHX_ HV *hv); */ + PERL_CALLCONV HE * Perl_hv_iternext_flags(pTHX_ HV *hv, I32 flags) __attribute__warn_unused_result__; @@ -1669,6 +1692,9 @@ Perl_hv_ksplit(pTHX_ HV *hv, IV newmax); #define PERL_ARGS_ASSERT_HV_KSPLIT \ assert(hv); assert(SvTYPE(hv) == SVt_PVHV) +/* PERL_CALLCONV void +Perl_hv_magic(pTHX_ HV *hv, GV *gv, int how); */ + PERL_CALLCONV void Perl_hv_name_set(pTHX_ HV *hv, const char *name, U32 len, U32 flags); #define PERL_ARGS_ASSERT_HV_NAME_SET \ @@ -1720,10 +1746,19 @@ Perl_hv_scalar(pTHX_ HV *hv) assert(hv); assert(SvTYPE(hv) == SVt_PVHV) /* PERL_CALLCONV SV ** -hv_stores(pTHX_ HV *hv, const char * const key, SV *val); */ +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 SV ** +Perl_hv_stores(pTHX_ HV *hv, const char * const key, SV *val); */ /* PERL_CALLCONV void -hv_undef(pTHX_ HV *hv); */ +Perl_hv_undef(pTHX_ HV *hv); */ PERL_CALLCONV void Perl_hv_undef_flags(pTHX_ HV *hv, U32 flags); @@ -2828,6 +2863,10 @@ Perl_newGVgen_flags(pTHX_ const char *pack, U32 flags) #define PERL_ARGS_ASSERT_NEWGVGEN_FLAGS \ assert(pack) +/* PERL_CALLCONV HV * +Perl_newHV(pTHX) + __attribute__warn_unused_result__; */ + PERL_CALLCONV OP * Perl_newHVREF(pTHX_ OP *o) __attribute__warn_unused_result__; @@ -5757,61 +5796,6 @@ Perl_gv_fullname3(pTHX_ SV *sv, const GV *gv, const char *prefix); # define PERL_ARGS_ASSERT_GV_FULLNAME3 \ assert(sv); assert(gv) -PERL_CALLCONV SV * -Perl_hv_delete(pTHX_ HV *hv, const char *key, I32 klen, I32 flags); -# define PERL_ARGS_ASSERT_HV_DELETE \ - assert(key); assert(!hv || SvTYPE(hv) == SVt_PVHV) - -PERL_CALLCONV SV * -Perl_hv_delete_ent(pTHX_ HV *hv, SV *keysv, I32 flags, U32 hash); -# define PERL_ARGS_ASSERT_HV_DELETE_ENT \ - assert(keysv); assert(!hv || SvTYPE(hv) == SVt_PVHV) - -PERL_CALLCONV bool -Perl_hv_exists(pTHX_ HV *hv, const char *key, I32 klen) - __attribute__warn_unused_result__; -# define PERL_ARGS_ASSERT_HV_EXISTS \ - assert(key); assert(!hv || SvTYPE(hv) == SVt_PVHV) - -PERL_CALLCONV bool -Perl_hv_exists_ent(pTHX_ HV *hv, SV *keysv, U32 hash) - __attribute__warn_unused_result__; -# define PERL_ARGS_ASSERT_HV_EXISTS_ENT \ - assert(keysv); assert(!hv || SvTYPE(hv) == SVt_PVHV) - -PERL_CALLCONV SV ** -Perl_hv_fetch(pTHX_ HV *hv, const char *key, I32 klen, I32 lval); -# define PERL_ARGS_ASSERT_HV_FETCH \ - assert(key); assert(!hv || SvTYPE(hv) == SVt_PVHV) - -PERL_CALLCONV HE * -Perl_hv_fetch_ent(pTHX_ HV *hv, SV *keysv, I32 lval, U32 hash); -# define PERL_ARGS_ASSERT_HV_FETCH_ENT \ - assert(keysv); assert(!hv || SvTYPE(hv) == SVt_PVHV) - -PERL_CALLCONV HE * -Perl_hv_iternext(pTHX_ HV *hv) - __attribute__warn_unused_result__; -# define PERL_ARGS_ASSERT_HV_ITERNEXT \ - assert(hv); assert(SvTYPE(hv) == SVt_PVHV) - -PERL_CALLCONV void -Perl_hv_magic(pTHX_ HV *hv, GV *gv, int how); -# define PERL_ARGS_ASSERT_HV_MAGIC \ - assert(hv); assert(SvTYPE(hv) == SVt_PVHV) - -PERL_CALLCONV SV ** -Perl_hv_store(pTHX_ HV *hv, const char *key, I32 klen, SV *val, U32 hash); -# define PERL_ARGS_ASSERT_HV_STORE - -PERL_CALLCONV HE * -Perl_hv_store_ent(pTHX_ HV *hv, SV *key, SV *val, U32 hash); -# define PERL_ARGS_ASSERT_HV_STORE_ENT - -PERL_CALLCONV SV ** -Perl_hv_store_flags(pTHX_ HV *hv, const char *key, I32 klen, SV *val, U32 hash, int flags); -# define PERL_ARGS_ASSERT_HV_STORE_FLAGS - PERL_CALLCONV STRLEN Perl_is_utf8_char_buf(const U8 *buf, const U8 *buf_end); # define PERL_ARGS_ASSERT_IS_UTF8_CHAR_BUF \ @@ -5822,11 +5806,6 @@ Perl_newAV(pTHX) __attribute__warn_unused_result__; # define PERL_ARGS_ASSERT_NEWAV -PERL_CALLCONV HV * -Perl_newHV(pTHX) - __attribute__warn_unused_result__; -# define PERL_ARGS_ASSERT_NEWHV - PERL_CALLCONV IO * Perl_newIO(pTHX) __attribute__warn_unused_result__;