Skip to content

Commit a7fa6fe

Browse files
committed
Revert "Move Perl_hv_* mathoms functions to macros in hv.h"
This reverts commit a8530b8.
1 parent 4c1301f commit a7fa6fe

File tree

5 files changed

+239
-93
lines changed

5 files changed

+239
-93
lines changed

embed.fnc

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1507,11 +1507,11 @@ ARdp |HV * |hv_copy_hints_hv \
15071507
Cp |void |hv_delayfree_ent \
15081508
|NULLOK HV *notused \
15091509
|NULLOK HE *entry
1510-
Admp |SV * |hv_delete |NULLOK HV *hv \
1510+
AMbdp |SV * |hv_delete |NULLOK HV *hv \
15111511
|NN const char *key \
15121512
|I32 klen \
15131513
|I32 flags
1514-
Admp |SV * |hv_delete_ent |NULLOK HV *hv \
1514+
AMbdp |SV * |hv_delete_ent |NULLOK HV *hv \
15151515
|NN SV *keysv \
15161516
|I32 flags \
15171517
|U32 hash
@@ -1527,17 +1527,17 @@ dp |void |hv_ename_delete|NN HV *hv \
15271527
|NN const char *name \
15281528
|U32 len \
15291529
|U32 flags
1530-
ARdmp |bool |hv_exists |NULLOK HV *hv \
1530+
AMRbdp |bool |hv_exists |NULLOK HV *hv \
15311531
|NN const char *key \
15321532
|I32 klen
1533-
ARdmp |bool |hv_exists_ent |NULLOK HV *hv \
1533+
AMRbdp |bool |hv_exists_ent |NULLOK HV *hv \
15341534
|NN SV *keysv \
15351535
|U32 hash
1536-
Admp |SV ** |hv_fetch |NULLOK HV *hv \
1536+
AMbdp |SV ** |hv_fetch |NULLOK HV *hv \
15371537
|NN const char *key \
15381538
|I32 klen \
15391539
|I32 lval
1540-
Admp |HE * |hv_fetch_ent |NULLOK HV *hv \
1540+
AMbdp |HE * |hv_fetch_ent |NULLOK HV *hv \
15411541
|NN SV *keysv \
15421542
|I32 lval \
15431543
|U32 hash
@@ -1548,7 +1548,7 @@ Adp |I32 |hv_iterinit |NN HV *hv
15481548
ARdp |char * |hv_iterkey |NN HE *entry \
15491549
|NN I32 *retlen
15501550
ARdp |SV * |hv_iterkeysv |NN HE *entry
1551-
Admp |HE * |hv_iternext |NN HV *hv
1551+
AMRbdp |HE * |hv_iternext |NN HV *hv
15521552
ARdpx |HE * |hv_iternext_flags \
15531553
|NN HV *hv \
15541554
|I32 flags
@@ -1559,7 +1559,7 @@ ARdp |SV * |hv_iterval |NN HV *hv \
15591559
|NN HE *entry
15601560
Adp |void |hv_ksplit |NN HV *hv \
15611561
|IV newmax
1562-
Admp |void |hv_magic |NN HV *hv \
1562+
AMbdp |void |hv_magic |NN HV *hv \
15631563
|NULLOK GV *gv \
15641564
|int how
15651565
Adp |void |hv_name_set |NN HV *hv \
@@ -1582,25 +1582,25 @@ Cdop |void |hv_riter_set |NN HV *hv \
15821582
|I32 riter
15831583

15841584
ARdp |SV * |hv_scalar |NN HV *hv
1585-
Admp |SV ** |hv_store |NULLOK HV *hv \
1585+
AMbdp |SV ** |hv_store |NULLOK HV *hv \
15861586
|NULLOK const char *key \
15871587
|I32 klen \
15881588
|NULLOK SV *val \
15891589
|U32 hash
1590-
Admp |HE * |hv_store_ent |NULLOK HV *hv \
1590+
AMbdp |HE * |hv_store_ent |NULLOK HV *hv \
15911591
|NULLOK SV *key \
15921592
|NULLOK SV *val \
15931593
|U32 hash
1594-
Ampx |SV ** |hv_store_flags |NULLOK HV *hv \
1594+
AMbpx |SV ** |hv_store_flags |NULLOK HV *hv \
15951595
|NULLOK const char *key \
15961596
|I32 klen \
15971597
|NULLOK SV *val \
15981598
|U32 hash \
15991599
|int flags
1600-
Admp |SV ** |hv_stores |NULLOK HV *hv \
1600+
Adm |SV ** |hv_stores |NULLOK HV *hv \
16011601
|"key" \
16021602
|NULLOK SV *val
1603-
Admp |void |hv_undef |NULLOK HV *hv
1603+
Adm |void |hv_undef |NULLOK HV *hv
16041604
Xop |void |hv_undef_flags |NULLOK HV *hv \
16051605
|U32 flags
16061606
APdm |I32 |ibcmp |NN const char *a \
@@ -2226,7 +2226,7 @@ ARdp |OP * |newGVOP |I32 type \
22262226
|NN GV *gv
22272227
ARdp |OP * |newGVREF |I32 type \
22282228
|NULLOK OP *o
2229-
ARdmp |HV * |newHV
2229+
AMRbdp |HV * |newHV
22302230
ARdp |HV * |newHVhv |NULLOK HV *hv
22312231
ARdp |OP * |newHVREF |NN OP *o
22322232
AMRbdp |IO * |newIO

embed.h

Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -297,31 +297,18 @@
297297
# define hv_common_key_len(a,b,c,d,e,f) Perl_hv_common_key_len(aTHX_ a,b,c,d,e,f)
298298
# define hv_copy_hints_hv(a) Perl_hv_copy_hints_hv(aTHX_ a)
299299
# define hv_delayfree_ent(a,b) Perl_hv_delayfree_ent(aTHX_ a,b)
300-
# define hv_delete(a,b,c,d) Perl_hv_delete(aTHX,a,b,c,d)
301-
# define hv_delete_ent(a,b,c,d) Perl_hv_delete_ent(aTHX,a,b,c,d)
302300
# define hv_dump(a) Perl_hv_dump(aTHX_ a)
303-
# define hv_exists(a,b,c) Perl_hv_exists(aTHX,a,b,c)
304-
# define hv_exists_ent(a,b,c) Perl_hv_exists_ent(aTHX,a,b,c)
305-
# define hv_fetch(a,b,c,d) Perl_hv_fetch(aTHX,a,b,c,d)
306-
# define hv_fetch_ent(a,b,c,d) Perl_hv_fetch_ent(aTHX,a,b,c,d)
307301
# define hv_free_ent(a,b) Perl_hv_free_ent(aTHX_ a,b)
308302
# define hv_iterinit(a) Perl_hv_iterinit(aTHX_ a)
309303
# define hv_iterkey(a,b) Perl_hv_iterkey(aTHX_ a,b)
310304
# define hv_iterkeysv(a) Perl_hv_iterkeysv(aTHX_ a)
311-
# define hv_iternext(a) Perl_hv_iternext(aTHX,a)
312305
# define hv_iternext_flags(a,b) Perl_hv_iternext_flags(aTHX_ a,b)
313306
# define hv_iternextsv(a,b,c) Perl_hv_iternextsv(aTHX_ a,b,c)
314307
# define hv_iterval(a,b) Perl_hv_iterval(aTHX_ a,b)
315308
# define hv_ksplit(a,b) Perl_hv_ksplit(aTHX_ a,b)
316-
# define hv_magic(a,b,c) Perl_hv_magic(aTHX,a,b,c)
317309
# define hv_name_set(a,b,c,d) Perl_hv_name_set(aTHX_ a,b,c,d)
318310
# define hv_rand_set(a,b) Perl_hv_rand_set(aTHX_ a,b)
319311
# define hv_scalar(a) Perl_hv_scalar(aTHX_ a)
320-
# define hv_store(a,b,c,d,e) Perl_hv_store(aTHX,a,b,c,d,e)
321-
# define hv_store_ent(a,b,c,d) Perl_hv_store_ent(aTHX,a,b,c,d)
322-
# define hv_store_flags(a,b,c,d,e,f) Perl_hv_store_flags(aTHX,a,b,c,d,e,f)
323-
# define hv_stores(a,b,c) Perl_hv_stores(aTHX,a,b,c)
324-
# define hv_undef(a) Perl_hv_undef(aTHX,a)
325312
# define init_i18nl10n(a) Perl_init_i18nl10n(aTHX_ a)
326313
# define init_stacks() Perl_init_stacks(aTHX)
327314
# define init_tm(a) Perl_init_tm(aTHX_ a)
@@ -419,7 +406,6 @@
419406
# define newGVOP(a,b,c) Perl_newGVOP(aTHX_ a,b,c)
420407
# define newGVREF(a,b) Perl_newGVREF(aTHX_ a,b)
421408
# define newGVgen_flags(a,b) Perl_newGVgen_flags(aTHX_ a,b)
422-
# define newHV() Perl_newHV(aTHX)
423409
# define newHVREF(a) Perl_newHVREF(aTHX_ a)
424410
# define newHVhv(a) Perl_newHVhv(aTHX_ a)
425411
# define newLISTOP(a,b,c,d) Perl_newLISTOP(aTHX_ a,b,c,d)

hv.h

Lines changed: 24 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -513,9 +513,9 @@ whether it is valid to call C<HvAUX()>.
513513
/* Flags for hv_iternext_flags. */
514514
#define HV_ITERNEXT_WANTPLACEHOLDERS 0x01 /* Don't skip placeholders. */
515515

516-
#define Perl_hv_iternext(mTHX, hv) Perl_hv_iternext_flags(aTHX_ hv, 0)
517-
#define Perl_hv_magic(mTHX, hv, gv, how) Perl_sv_magic(aTHX_ MUTABLE_SV(hv), MUTABLE_SV(gv), how, NULL, 0)
518-
#define Perl_hv_undef(mTHX, hv) Perl_hv_undef_flags(aTHX_ hv, 0)
516+
#define hv_iternext(hv) hv_iternext_flags(hv, 0)
517+
#define hv_magic(hv, gv, how) sv_magic(MUTABLE_SV(hv), MUTABLE_SV(gv), how, NULL, 0)
518+
#define hv_undef(hv) Perl_hv_undef_flags(aTHX_ hv, 0)
519519

520520
#define Perl_sharepvn(pv, len, hash) HEK_KEY(share_hek(pv, len, hash))
521521
#define sharepvn(pv, len, hash) Perl_sharepvn(pv, len, hash)
@@ -527,41 +527,41 @@ whether it is valid to call C<HvAUX()>.
527527
->shared_he_he.he_valu.hent_refcount), \
528528
hek)
529529

530-
#define Perl_hv_store_ent(mTHX, hv, keysv, val, hash) \
531-
((HE *) Perl_hv_common(aTHX_ (hv), (keysv), NULL, 0, 0, HV_FETCH_ISSTORE, \
530+
#define hv_store_ent(hv, keysv, val, hash) \
531+
((HE *) hv_common((hv), (keysv), NULL, 0, 0, HV_FETCH_ISSTORE, \
532532
(val), (hash)))
533533

534-
#define Perl_hv_exists_ent(mTHX, hv, keysv, hash) \
535-
cBOOL(Perl_hv_common(aTHX_ (hv), (keysv), NULL, 0, 0, HV_FETCH_ISEXISTS, 0, (hash)))
536-
#define Perl_hv_fetch_ent(mTHX, hv, keysv, lval, hash) \
537-
((HE *) Perl_hv_common(aTHX_ (hv), (keysv), NULL, 0, 0, \
534+
#define hv_exists_ent(hv, keysv, hash) \
535+
cBOOL(hv_common((hv), (keysv), NULL, 0, 0, HV_FETCH_ISEXISTS, 0, (hash)))
536+
#define hv_fetch_ent(hv, keysv, lval, hash) \
537+
((HE *) hv_common((hv), (keysv), NULL, 0, 0, \
538538
((lval) ? HV_FETCH_LVALUE : 0), NULL, (hash)))
539-
#define Perl_hv_delete_ent(mTHX, hv, key, flags, hash) \
540-
(MUTABLE_SV(Perl_hv_common(aTHX_ (hv), (key), NULL, 0, 0, (flags) | HV_DELETE, \
539+
#define hv_delete_ent(hv, key, flags, hash) \
540+
(MUTABLE_SV(hv_common((hv), (key), NULL, 0, 0, (flags) | HV_DELETE, \
541541
NULL, (hash))))
542542

543-
#define Perl_hv_store_flags(mTHX, hv, key, klen, val, hash, flags) \
544-
((SV**) Perl_hv_common(aTHX_ (hv), NULL, (key), (klen), (flags), \
543+
#define hv_store_flags(hv, key, klen, val, hash, flags) \
544+
((SV**) hv_common((hv), NULL, (key), (klen), (flags), \
545545
(HV_FETCH_ISSTORE|HV_FETCH_JUST_SV), (val), \
546546
(hash)))
547547

548-
#define Perl_hv_store(mTHX, hv, key, klen, val, hash) \
549-
((SV**) Perl_hv_common_key_len(aTHX_ (hv), (key), (klen), \
548+
#define hv_store(hv, key, klen, val, hash) \
549+
((SV**) hv_common_key_len((hv), (key), (klen), \
550550
(HV_FETCH_ISSTORE|HV_FETCH_JUST_SV), \
551551
(val), (hash)))
552552

553553

554554

555-
#define Perl_hv_exists(mTHX, hv, key, klen) \
556-
cBOOL(Perl_hv_common_key_len(aTHX_ (hv), (key), (klen), HV_FETCH_ISEXISTS, NULL, 0))
555+
#define hv_exists(hv, key, klen) \
556+
cBOOL(hv_common_key_len((hv), (key), (klen), HV_FETCH_ISEXISTS, NULL, 0))
557557

558-
#define Perl_hv_fetch(mTHX, hv, key, klen, lval) \
559-
((SV**) Perl_hv_common_key_len(aTHX_ (hv), (key), (klen), (lval) \
558+
#define hv_fetch(hv, key, klen, lval) \
559+
((SV**) hv_common_key_len((hv), (key), (klen), (lval) \
560560
? (HV_FETCH_JUST_SV | HV_FETCH_LVALUE) \
561561
: HV_FETCH_JUST_SV, NULL, 0))
562562

563-
#define Perl_hv_delete(mTHX, hv, key, klen, flags) \
564-
(MUTABLE_SV(Perl_hv_common_key_len(aTHX_ (hv), (key), (klen), \
563+
#define hv_delete(hv, key, klen, flags) \
564+
(MUTABLE_SV(hv_common_key_len((hv), (key), (klen), \
565565
(flags) | HV_DELETE, NULL, 0)))
566566

567567
/* Provide 's' suffix subs for constant strings (and avoid needing to count
@@ -590,8 +590,8 @@ whether it is valid to call C<HvAUX()>.
590590
#define hv_name_sets(hv, name, flags) \
591591
hv_name_set((hv),ASSERT_IS_LITERAL(name),(sizeof(name)-1), flags)
592592

593-
#define Perl_hv_stores(mTHX, hv, key, val) \
594-
Perl_hv_store(aTHX, (hv), ASSERT_IS_LITERAL(key), (sizeof(key)-1), (val), 0)
593+
#define hv_stores(hv, key, val) \
594+
hv_store((hv), ASSERT_IS_LITERAL(key), (sizeof(key)-1), (val), 0)
595595

596596
#ifdef PERL_CORE
597597
# define hv_storehek(hv, hek, val) \
@@ -731,7 +731,7 @@ Creates a new HV. The reference count is set to 1.
731731
=cut
732732
*/
733733

734-
#define Perl_newHV(mTHX) MUTABLE_HV(Perl_newSV_type(aTHX_ SVt_PVHV))
734+
#define newHV() MUTABLE_HV(newSV_type(SVt_PVHV))
735735

736736
#include "hv_func.h"
737737

mathoms.c

Lines changed: 139 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -401,6 +401,22 @@ Perl_gv_fetchmethod(pTHX_ HV *stash, const char *name)
401401
return gv_fetchmethod_autoload(stash, name, TRUE);
402402
}
403403

404+
HE *
405+
Perl_hv_iternext(pTHX_ HV *hv)
406+
{
407+
PERL_ARGS_ASSERT_HV_ITERNEXT;
408+
409+
return hv_iternext_flags(hv, 0);
410+
}
411+
412+
void
413+
Perl_hv_magic(pTHX_ HV *hv, GV *gv, int how)
414+
{
415+
PERL_ARGS_ASSERT_HV_MAGIC;
416+
417+
sv_magic(MUTABLE_SV(hv), MUTABLE_SV(gv), how, NULL, 0);
418+
}
419+
404420
bool
405421
Perl_do_open(pTHX_ GV *gv, const char *name, I32 len, int as_raw,
406422
int rawmode, int rawperm, PerlIO *supplied_fp)
@@ -483,6 +499,120 @@ Perl_sv_usepvn(pTHX_ SV *sv, char *ptr, STRLEN len)
483499
sv_usepvn_flags(sv,ptr,len, 0);
484500
}
485501

502+
HE *
503+
Perl_hv_store_ent(pTHX_ HV *hv, SV *keysv, SV *val, U32 hash)
504+
{
505+
return (HE *)hv_common(hv, keysv, NULL, 0, 0, HV_FETCH_ISSTORE, val, hash);
506+
}
507+
508+
bool
509+
Perl_hv_exists_ent(pTHX_ HV *hv, SV *keysv, U32 hash)
510+
{
511+
PERL_ARGS_ASSERT_HV_EXISTS_ENT;
512+
513+
return cBOOL(hv_common(hv, keysv, NULL, 0, 0, HV_FETCH_ISEXISTS, 0, hash));
514+
}
515+
516+
HE *
517+
Perl_hv_fetch_ent(pTHX_ HV *hv, SV *keysv, I32 lval, U32 hash)
518+
{
519+
PERL_ARGS_ASSERT_HV_FETCH_ENT;
520+
521+
return (HE *)hv_common(hv, keysv, NULL, 0, 0,
522+
(lval ? HV_FETCH_LVALUE : 0), NULL, hash);
523+
}
524+
525+
SV *
526+
Perl_hv_delete_ent(pTHX_ HV *hv, SV *keysv, I32 flags, U32 hash)
527+
{
528+
PERL_ARGS_ASSERT_HV_DELETE_ENT;
529+
530+
return MUTABLE_SV(hv_common(hv, keysv, NULL, 0, 0, flags | HV_DELETE, NULL,
531+
hash));
532+
}
533+
534+
SV**
535+
Perl_hv_store_flags(pTHX_ HV *hv, const char *key, I32 klen, SV *val, U32 hash,
536+
int flags)
537+
{
538+
return (SV**) hv_common(hv, NULL, key, klen, flags,
539+
(HV_FETCH_ISSTORE|HV_FETCH_JUST_SV), val, hash);
540+
}
541+
542+
SV**
543+
Perl_hv_store(pTHX_ HV *hv, const char *key, I32 klen_i32, SV *val, U32 hash)
544+
{
545+
STRLEN klen;
546+
int flags;
547+
548+
if (klen_i32 < 0) {
549+
klen = -klen_i32;
550+
flags = HVhek_UTF8;
551+
} else {
552+
klen = klen_i32;
553+
flags = 0;
554+
}
555+
return (SV **) hv_common(hv, NULL, key, klen, flags,
556+
(HV_FETCH_ISSTORE|HV_FETCH_JUST_SV), val, hash);
557+
}
558+
559+
bool
560+
Perl_hv_exists(pTHX_ HV *hv, const char *key, I32 klen_i32)
561+
{
562+
STRLEN klen;
563+
int flags;
564+
565+
PERL_ARGS_ASSERT_HV_EXISTS;
566+
567+
if (klen_i32 < 0) {
568+
klen = -klen_i32;
569+
flags = HVhek_UTF8;
570+
} else {
571+
klen = klen_i32;
572+
flags = 0;
573+
}
574+
return cBOOL(hv_common(hv, NULL, key, klen, flags, HV_FETCH_ISEXISTS, 0, 0));
575+
}
576+
577+
SV**
578+
Perl_hv_fetch(pTHX_ HV *hv, const char *key, I32 klen_i32, I32 lval)
579+
{
580+
STRLEN klen;
581+
int flags;
582+
583+
PERL_ARGS_ASSERT_HV_FETCH;
584+
585+
if (klen_i32 < 0) {
586+
klen = -klen_i32;
587+
flags = HVhek_UTF8;
588+
} else {
589+
klen = klen_i32;
590+
flags = 0;
591+
}
592+
return (SV **) hv_common(hv, NULL, key, klen, flags,
593+
lval ? (HV_FETCH_JUST_SV | HV_FETCH_LVALUE)
594+
: HV_FETCH_JUST_SV, NULL, 0);
595+
}
596+
597+
SV *
598+
Perl_hv_delete(pTHX_ HV *hv, const char *key, I32 klen_i32, I32 flags)
599+
{
600+
STRLEN klen;
601+
int k_flags;
602+
603+
PERL_ARGS_ASSERT_HV_DELETE;
604+
605+
if (klen_i32 < 0) {
606+
klen = -klen_i32;
607+
k_flags = HVhek_UTF8;
608+
} else {
609+
klen = klen_i32;
610+
k_flags = 0;
611+
}
612+
return MUTABLE_SV(hv_common(hv, NULL, key, klen, k_flags, flags | HV_DELETE,
613+
NULL, 0));
614+
}
615+
486616
AV *
487617
Perl_newAV(pTHX)
488618
{
@@ -493,6 +623,15 @@ Perl_newAV(pTHX)
493623
AvMAX(av) = AvFILLp(av) = -1; */
494624
}
495625

626+
HV *
627+
Perl_newHV(pTHX)
628+
{
629+
HV * const hv = MUTABLE_HV(newSV_type(SVt_PVHV));
630+
assert(!SvOK(hv));
631+
632+
return hv;
633+
}
634+
496635
void
497636
Perl_sv_insert(pTHX_ SV *const bigstr, const STRLEN offset, const STRLEN len,
498637
const char *const little, const STRLEN littlelen)

0 commit comments

Comments
 (0)