summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--dump.c6
-rw-r--r--ext/Hash-Util/Util.xs2
-rw-r--r--ext/Hash-Util/lib/Hash/Util.pm2
-rw-r--r--gv.c8
-rw-r--r--hv.c48
-rw-r--r--hv.h24
-rw-r--r--mro_core.c4
-rw-r--r--scope.c10
-rw-r--r--sv.c16
9 files changed, 59 insertions, 61 deletions
diff --git a/dump.c b/dump.c
index 6887ec3ad3..a004f6bfd0 100644
--- a/dump.c
+++ b/dump.c
@@ -2091,7 +2091,7 @@ Perl_do_sv_dump(pTHX_ I32 level, PerlIO *file, SV *sv, I32 nest, I32 maxnest, bo
break;
case SVt_PVHV: {
U32 totalkeys;
- if (SvOOK(sv)) {
+ if (HvHasAUX(sv)) {
struct xpvhv_aux *const aux = HvAUX(sv);
Perl_dump_indent(aTHX_ level, file, " AUX_FLAGS = %" UVuf "\n",
(UV)aux->xhv_aux_flags);
@@ -2175,7 +2175,7 @@ Perl_do_sv_dump(pTHX_ I32 level, PerlIO *file, SV *sv, I32 nest, I32 maxnest, bo
}
Perl_dump_indent(aTHX_ level, file, " MAX = %" IVdf "\n",
(IV)HvMAX(sv));
- if (SvOOK(sv)) {
+ if (HvHasAUX(sv)) {
Perl_dump_indent(aTHX_ level, file, " RITER = %" IVdf "\n",
(IV)HvRITER_get(sv));
Perl_dump_indent(aTHX_ level, file, " EITER = 0x%" UVxf "\n",
@@ -2205,7 +2205,7 @@ Perl_do_sv_dump(pTHX_ I32 level, PerlIO *file, SV *sv, I32 nest, I32 maxnest, bo
HvNAMELEN(sv), HvNAMEUTF8(sv)));
}
}
- if (SvOOK(sv)) {
+ if (HvHasAUX(sv)) {
AV * const backrefs
= *Perl_hv_backreferences_p(aTHX_ MUTABLE_HV(sv));
struct mro_meta * const meta = HvAUX(sv)->xhv_mro_meta;
diff --git a/ext/Hash-Util/Util.xs b/ext/Hash-Util/Util.xs
index 4e49a095e3..b266f4a81c 100644
--- a/ext/Hash-Util/Util.xs
+++ b/ext/Hash-Util/Util.xs
@@ -115,7 +115,7 @@ hash_traversal_mask(rhv, ...)
if (items>1) {
hv_rand_set(hv, SvUV(ST(1)));
}
- if (SvOOK(hv)) {
+ if (HvHasAUX(hv)) {
XSRETURN_UV(HvRAND_get(hv));
} else {
XSRETURN_UNDEF;
diff --git a/ext/Hash-Util/lib/Hash/Util.pm b/ext/Hash-Util/lib/Hash/Util.pm
index 0b42922c96..f2c6df690e 100644
--- a/ext/Hash-Util/lib/Hash/Util.pm
+++ b/ext/Hash-Util/lib/Hash/Util.pm
@@ -42,7 +42,7 @@ our @EXPORT_OK = qw(
BEGIN {
# make sure all our XS routines are available early so their prototypes
# are correctly applied in the following code.
- our $VERSION = '0.28';
+ our $VERSION = '0.29';
require XSLoader;
XSLoader::load();
}
diff --git a/gv.c b/gv.c
index 950f058931..167a40d791 100644
--- a/gv.c
+++ b/gv.c
@@ -2769,7 +2769,7 @@ Perl_gv_check(pTHX_ HV *stash)
PERL_ARGS_ASSERT_GV_CHECK;
- if (!SvOOK(stash))
+ if (!HvHasAUX(stash))
return;
assert(HvARRAY(stash));
@@ -2788,7 +2788,7 @@ Perl_gv_check(pTHX_ HV *stash)
(gv = MUTABLE_GV(HeVAL(entry))) && isGV(gv) && (hv = GvHV(gv)))
{
if (hv != PL_defstash && hv != stash
- && !(SvOOK(hv)
+ && !(HvHasAUX(hv)
&& (HvAUX(hv)->xhv_aux_flags & HvAUXf_SCAN_STASH))
)
gv_check(hv); /* nested package */
@@ -3183,7 +3183,7 @@ Perl_Gv_AMupdate(pTHX_ HV *stash, bool destructing)
filled = 1;
}
- assert(SvOOK(stash));
+ assert(HvHasAUX(stash));
/* initially assume the worst */
HvAUX(stash)->xhv_aux_flags &= ~HvAUXf_NO_DEREF;
@@ -3479,7 +3479,7 @@ Perl_amagic_deref_call(pTHX_ SV *ref, int method) {
return ref;
/* return quickly if none of the deref ops are overloaded */
stash = SvSTASH(SvRV(ref));
- assert(SvOOK(stash));
+ assert(HvHasAUX(stash));
if (HvAUX(stash)->xhv_aux_flags & HvAUXf_NO_DEREF)
return ref;
diff --git a/hv.c b/hv.c
index ecb6867a6f..a792e447d2 100644
--- a/hv.c
+++ b/hv.c
@@ -1016,7 +1016,7 @@ Perl_hv_common(pTHX_ HV *hv, SV *keysv, const char *key, STRLEN klen,
*oentry = entry;
}
#ifdef PERL_HASH_RANDOMIZE_KEYS
- if (SvOOK(hv)) {
+ if (HvHasAUX(hv)) {
/* Currently this makes various tests warn in annoying ways.
* So Silenced for now. - Yves | bogus end of comment =>* /
if (HvAUX(hv)->xhv_riter != -1) {
@@ -1432,11 +1432,11 @@ S_hv_delete_common(pTHX_ HV *hv, SV *keysv, const char *key, STRLEN klen,
else {
HeVAL(entry) = NULL;
*oentry = HeNEXT(entry);
- if (SvOOK(hv) && entry == HvAUX(hv)->xhv_eiter /* HvEITER(hv) */) {
+ if (HvHasAUX(hv) && entry == HvAUX(hv)->xhv_eiter /* HvEITER(hv) */) {
HvLAZYDEL_on(hv);
}
else {
- if (SvOOK(hv) && HvLAZYDEL(hv) &&
+ if (HvHasAUX(hv) && HvLAZYDEL(hv) &&
entry == HeNEXT(HvAUX(hv)->xhv_eiter))
HeNEXT(HvAUX(hv)->xhv_eiter) = HeNEXT(entry);
hv_free_ent(NULL, entry);
@@ -1602,7 +1602,7 @@ static bool
S_large_hash_heuristic(pTHX_ HV *hv, STRLEN size) {
if (size > 42
&& !SvOBJECT(hv)
- && !(SvOOK(hv) && HvENAME_get(hv))) {
+ && !(HvHasAUX(hv) && HvENAME_get(hv))) {
/* This hash appears to be growing quite large.
We gamble that it is not sharing keys with other hashes. */
return TRUE;
@@ -1745,11 +1745,11 @@ Perl_hv_ksplit(pTHX_ HV *hv, IV newmax)
a = (char *) HvARRAY(hv);
if (a) {
#ifdef PERL_HASH_RANDOMIZE_KEYS
- U32 was_ook = SvOOK(hv);
+ U32 was_ook = HvHasAUX(hv);
#endif
hsplit(hv, oldsize, newsize);
#ifdef PERL_HASH_RANDOMIZE_KEYS
- if (was_ook && SvOOK(hv) && HvTOTALKEYS(hv)) {
+ if (was_ook && HvHasAUX(hv) && HvTOTALKEYS(hv)) {
MAYBE_UPDATE_HASH_RAND_BITS();
HvAUX(hv)->xhv_rand = (U32)PL_hash_rand_bits;
}
@@ -2047,7 +2047,7 @@ Perl_hv_clear(pTHX_ HV *hv)
HvHASKFLAGS_off(hv);
}
- if (SvOOK(hv)) {
+ if (HvHasAUX(hv)) {
if(HvENAME_get(hv))
mro_isa_changed_in(hv);
HvEITER_set(hv, NULL);
@@ -2108,7 +2108,7 @@ S_clear_placeholders(pTHX_ HV *hv, const U32 placeholders)
if (entry == HvEITER_get(hv))
HvLAZYDEL_on(hv);
else {
- if (SvOOK(hv) && HvLAZYDEL(hv) &&
+ if (HvHasAUX(hv) && HvLAZYDEL(hv) &&
entry == HeNEXT(HvAUX(hv)->xhv_eiter))
HeNEXT(HvAUX(hv)->xhv_eiter) = HeNEXT(entry);
hv_free_ent(NULL, entry);
@@ -2167,7 +2167,7 @@ Perl_hfree_next_entry(pTHX_ HV *hv, STRLEN *indexp)
PERL_ARGS_ASSERT_HFREE_NEXT_ENTRY;
- if (SvOOK(hv) && ((iter = HvAUX(hv)))) {
+ if (HvHasAUX(hv) && ((iter = HvAUX(hv)))) {
if ((entry = iter->xhv_eiter)) {
/* the iterator may get resurrected after each
* destructor call, so check each time */
@@ -2272,7 +2272,7 @@ Perl_hv_undef_flags(pTHX_ HV *hv, U32 flags)
HE* that needs to be explicitly freed. */
hv_free_entries(hv);
- /* SvOOK() is true for a hash if it has struct xpvhv_aux allocated. That
+ /* HvHasAUX() is true for a hash if it has struct xpvhv_aux allocated. That
structure has several other pieces of allocated memory - hence those must
be freed before the structure itself can be freed. Some can be freed when
a hash is "undefined" (this function), but some must persist until it is
@@ -2285,7 +2285,7 @@ Perl_hv_undef_flags(pTHX_ HV *hv, U32 flags)
must remain consistent, because this code can no longer clear SVf_OOK,
meaning that this structure might be read again at any point in the
future without further checks or reinitialisation. */
- if (SvOOK(hv)) {
+ if (HvHasAUX(hv)) {
struct mro_meta *meta;
const char *name;
@@ -2407,7 +2407,7 @@ S_hv_auxinit(pTHX_ HV *hv) {
PERL_ARGS_ASSERT_HV_AUXINIT;
- if (!SvOOK(hv)) {
+ if (!HvHasAUX(hv)) {
char *array = (char *) HvARRAY(hv);
if (!array) {
Newxz(array, PERL_HV_ARRAY_ALLOC_BYTES(HvMAX(hv) + 1), char);
@@ -2455,7 +2455,7 @@ Perl_hv_iterinit(pTHX_ HV *hv)
{
PERL_ARGS_ASSERT_HV_ITERINIT;
- if (SvOOK(hv)) {
+ if (HvHasAUX(hv)) {
struct xpvhv_aux * iter = HvAUX(hv);
HE * const entry = iter->xhv_eiter; /* HvEITER(hv) */
if (entry && HvLAZYDEL(hv)) { /* was deleted earlier? */
@@ -2489,7 +2489,7 @@ Perl_hv_riter_p(pTHX_ HV *hv) {
PERL_ARGS_ASSERT_HV_RITER_P;
- iter = SvOOK(hv) ? HvAUX(hv) : hv_auxinit(hv);
+ iter = HvHasAUX(hv) ? HvAUX(hv) : hv_auxinit(hv);
return &(iter->xhv_riter);
}
@@ -2507,7 +2507,7 @@ Perl_hv_eiter_p(pTHX_ HV *hv) {
PERL_ARGS_ASSERT_HV_EITER_P;
- iter = SvOOK(hv) ? HvAUX(hv) : hv_auxinit(hv);
+ iter = HvHasAUX(hv) ? HvAUX(hv) : hv_auxinit(hv);
return &(iter->xhv_eiter);
}
@@ -2525,7 +2525,7 @@ Perl_hv_riter_set(pTHX_ HV *hv, I32 riter) {
PERL_ARGS_ASSERT_HV_RITER_SET;
- if (SvOOK(hv)) {
+ if (HvHasAUX(hv)) {
iter = HvAUX(hv);
} else {
if (riter == -1)
@@ -2543,7 +2543,7 @@ Perl_hv_rand_set(pTHX_ HV *hv, U32 new_xhv_rand) {
PERL_ARGS_ASSERT_HV_RAND_SET;
#ifdef PERL_HASH_RANDOMIZE_KEYS
- if (SvOOK(hv)) {
+ if (HvHasAUX(hv)) {
iter = HvAUX(hv);
} else {
iter = hv_auxinit(hv);
@@ -2568,7 +2568,7 @@ Perl_hv_eiter_set(pTHX_ HV *hv, HE *eiter) {
PERL_ARGS_ASSERT_HV_EITER_SET;
- if (SvOOK(hv)) {
+ if (HvHasAUX(hv)) {
iter = HvAUX(hv);
} else {
/* 0 is the default so don't go malloc()ing a new structure just to
@@ -2618,7 +2618,7 @@ Perl_hv_name_set(pTHX_ HV *hv, const char *name, U32 len, U32 flags)
if (len > I32_MAX)
Perl_croak(aTHX_ "panic: hv name too long (%" UVuf ")", (UV) len);
- if (SvOOK(hv)) {
+ if (HvHasAUX(hv)) {
iter = HvAUX(hv);
if (iter->xhv_name_u.xhvnameu_name) {
if(iter->xhv_name_count) {
@@ -2714,7 +2714,7 @@ table.
void
Perl_hv_ename_add(pTHX_ HV *hv, const char *name, U32 len, U32 flags)
{
- struct xpvhv_aux *aux = SvOOK(hv) ? HvAUX(hv) : hv_auxinit(hv);
+ struct xpvhv_aux *aux = HvHasAUX(hv) ? HvAUX(hv) : hv_auxinit(hv);
U32 hash;
PERL_ARGS_ASSERT_HV_ENAME_ADD;
@@ -2784,7 +2784,7 @@ Perl_hv_ename_delete(pTHX_ HV *hv, const char *name, U32 len, U32 flags)
if (len > I32_MAX)
Perl_croak(aTHX_ "panic: hv name too long (%" UVuf ")", (UV) len);
- if (!SvOOK(hv)) return;
+ if (!HvHasAUX(hv)) return;
aux = HvAUX(hv);
if (!aux->xhv_name_u.xhvnameu_name) return;
@@ -2844,7 +2844,7 @@ Perl_hv_backreferences_p(pTHX_ HV *hv) {
PERL_ARGS_ASSERT_HV_BACKREFERENCES_P;
/* See also Perl_sv_get_backrefs in sv.c where this logic is unrolled */
{
- struct xpvhv_aux * const iter = SvOOK(hv) ? HvAUX(hv) : hv_auxinit(hv);
+ struct xpvhv_aux * const iter = HvHasAUX(hv) ? HvAUX(hv) : hv_auxinit(hv);
return &(iter->xhv_backreferences);
}
}
@@ -2855,7 +2855,7 @@ Perl_hv_kill_backrefs(pTHX_ HV *hv) {
PERL_ARGS_ASSERT_HV_KILL_BACKREFS;
- if (!SvOOK(hv))
+ if (!HvHasAUX(hv))
return;
av = HvAUX(hv)->xhv_backreferences;
@@ -2910,7 +2910,7 @@ Perl_hv_iternext_flags(pTHX_ HV *hv, I32 flags)
PERL_ARGS_ASSERT_HV_ITERNEXT_FLAGS;
- if (!SvOOK(hv)) {
+ if (!HvHasAUX(hv)) {
/* Too many things (well, pp_each at least) merrily assume that you can
call hv_iternext without calling hv_iterinit, so we'll have to deal
with it. */
diff --git a/hv.h b/hv.h
index 7e1fc3d50b..2083ce9b2c 100644
--- a/hv.h
+++ b/hv.h
@@ -303,10 +303,10 @@ whether it is valid to call C<HvAUX()>.
#define HvEITER(hv) (*Perl_hv_eiter_p(aTHX_ MUTABLE_HV(hv)))
#define HvRITER_set(hv,r) Perl_hv_riter_set(aTHX_ MUTABLE_HV(hv), r)
#define HvEITER_set(hv,e) Perl_hv_eiter_set(aTHX_ MUTABLE_HV(hv), e)
-#define HvRITER_get(hv) (SvOOK(hv) ? HvAUX(hv)->xhv_riter : -1)
-#define HvEITER_get(hv) (SvOOK(hv) ? HvAUX(hv)->xhv_eiter : NULL)
-#define HvRAND_get(hv) (SvOOK(hv) ? HvAUX(hv)->xhv_rand : 0)
-#define HvLASTRAND_get(hv) (SvOOK(hv) ? HvAUX(hv)->xhv_last_rand : 0)
+#define HvRITER_get(hv) (HvHasAUX(hv) ? HvAUX(hv)->xhv_riter : -1)
+#define HvEITER_get(hv) (HvHasAUX(hv) ? HvAUX(hv)->xhv_eiter : NULL)
+#define HvRAND_get(hv) (HvHasAUX(hv) ? HvAUX(hv)->xhv_rand : 0)
+#define HvLASTRAND_get(hv) (HvHasAUX(hv) ? HvAUX(hv)->xhv_last_rand : 0)
#define HvNAME(hv) HvNAME_get(hv)
#define HvNAMELEN(hv) HvNAMELEN_get(hv)
@@ -327,15 +327,15 @@ whether it is valid to call C<HvAUX()>.
)
/* This macro may go away without notice. */
#define HvNAME_HEK(hv) \
- (SvOOK(hv) && HvAUX(hv)->xhv_name_u.xhvnameu_name ? HvNAME_HEK_NN(hv) : NULL)
+ (HvHasAUX(hv) && HvAUX(hv)->xhv_name_u.xhvnameu_name ? HvNAME_HEK_NN(hv) : NULL)
#define HvNAME_get(hv) \
- ((SvOOK(hv) && HvAUX(hv)->xhv_name_u.xhvnameu_name && HvNAME_HEK_NN(hv)) \
+ ((HvHasAUX(hv) && HvAUX(hv)->xhv_name_u.xhvnameu_name && HvNAME_HEK_NN(hv)) \
? HEK_KEY(HvNAME_HEK_NN(hv)) : NULL)
#define HvNAMELEN_get(hv) \
- ((SvOOK(hv) && HvAUX(hv)->xhv_name_u.xhvnameu_name && HvNAME_HEK_NN(hv)) \
+ ((HvHasAUX(hv) && HvAUX(hv)->xhv_name_u.xhvnameu_name && HvNAME_HEK_NN(hv)) \
? HEK_LEN(HvNAME_HEK_NN(hv)) : 0)
#define HvNAMEUTF8(hv) \
- ((SvOOK(hv) && HvAUX(hv)->xhv_name_u.xhvnameu_name && HvNAME_HEK_NN(hv)) \
+ ((HvHasAUX(hv) && HvAUX(hv)->xhv_name_u.xhvnameu_name && HvNAME_HEK_NN(hv)) \
? HEK_UTF8(HvNAME_HEK_NN(hv)) : 0)
#define HvENAME_HEK_NN(hv) \
( \
@@ -345,15 +345,15 @@ whether it is valid to call C<HvAUX()>.
HvAUX(hv)->xhv_name_u.xhvnameu_name \
)
#define HvENAME_HEK(hv) \
- (SvOOK(hv) && HvAUX(hv)->xhv_name_u.xhvnameu_name ? HvENAME_HEK_NN(hv) : NULL)
+ (HvHasAUX(hv) && HvAUX(hv)->xhv_name_u.xhvnameu_name ? HvENAME_HEK_NN(hv) : NULL)
#define HvENAME_get(hv) \
- ((SvOOK(hv) && HvAUX(hv)->xhv_name_u.xhvnameu_name && HvAUX(hv)->xhv_name_count != -1) \
+ ((HvHasAUX(hv) && HvAUX(hv)->xhv_name_u.xhvnameu_name && HvAUX(hv)->xhv_name_count != -1) \
? HEK_KEY(HvENAME_HEK_NN(hv)) : NULL)
#define HvENAMELEN_get(hv) \
- ((SvOOK(hv) && HvAUX(hv)->xhv_name_u.xhvnameu_name && HvAUX(hv)->xhv_name_count != -1) \
+ ((HvHasAUX(hv) && HvAUX(hv)->xhv_name_u.xhvnameu_name && HvAUX(hv)->xhv_name_count != -1) \
? HEK_LEN(HvENAME_HEK_NN(hv)) : 0)
#define HvENAMEUTF8(hv) \
- ((SvOOK(hv) && HvAUX(hv)->xhv_name_u.xhvnameu_name && HvAUX(hv)->xhv_name_count != -1) \
+ ((HvHasAUX(hv) && HvAUX(hv)->xhv_name_u.xhvnameu_name && HvAUX(hv)->xhv_name_count != -1) \
? HEK_UTF8(HvENAME_HEK_NN(hv)) : 0)
/*
diff --git a/mro_core.c b/mro_core.c
index 235dacaec7..042ed673e8 100644
--- a/mro_core.c
+++ b/mro_core.c
@@ -415,7 +415,7 @@ Perl_mro_get_linear_isa(pTHX_ HV *stash)
AV *isa;
PERL_ARGS_ASSERT_MRO_GET_LINEAR_ISA;
- if(!SvOOK(stash))
+ if(!HvHasAUX(stash))
Perl_croak(aTHX_ "Can't linearize anonymous symbol table");
meta = HvMROMETA(stash);
@@ -792,7 +792,7 @@ Perl_mro_package_moved(pTHX_ HV * const stash, HV * const oldstash,
*svp != (SV *)gv
) return;
}
- assert(SvOOK(GvSTASH(gv)));
+ assert(HvHasAUX(GvSTASH(gv)));
assert(GvNAMELEN(gv));
assert(GvNAME(gv)[GvNAMELEN(gv) - 1] == ':');
assert(GvNAMELEN(gv) == 1 || GvNAME(gv)[GvNAMELEN(gv) - 2] == ':');
diff --git a/scope.c b/scope.c
index 257330df66..17e5282993 100644
--- a/scope.c
+++ b/scope.c
@@ -1396,12 +1396,10 @@ Perl_leave_scope(pTHX_ I32 base)
if (SvREADONLY(sv))
SvREADONLY_off(sv);
- if (SvOOK(sv)) { /* OOK or HvAUX */
- if (SvTYPE(sv) == SVt_PVHV)
- Perl_hv_kill_backrefs(aTHX_ MUTABLE_HV(sv));
- else
- sv_backoff(sv);
- }
+ if (SvTYPE(sv) == SVt_PVHV && HvHasAUX(sv))
+ Perl_hv_kill_backrefs(aTHX_ MUTABLE_HV(sv));
+ else if(SvOOK(sv))
+ sv_backoff(sv);
if (SvMAGICAL(sv)) {
/* note that backrefs (either in HvAUX or magic)
diff --git a/sv.c b/sv.c
index 7276030bf5..6344a4cbff 100644
--- a/sv.c
+++ b/sv.c
@@ -1206,7 +1206,7 @@ Perl_hv_auxalloc(pTHX_ HV *hv) {
PERL_ARGS_ASSERT_HV_AUXALLOC;
assert(SvTYPE(hv) == SVt_PVHV);
- assert(!SvOOK(hv));
+ assert(!HvHasAUX(hv));
#ifdef PURIFY
new_body = new_NOARENAZ(&fake_hv_with_aux);
@@ -1230,7 +1230,7 @@ Perl_hv_auxalloc(pTHX_ HV *hv) {
#endif
SvANY(hv) = (XPVHV *) new_body;
- SvOOK_on(hv);
+ SvFLAGS(hv) |= SVphv_HasAUX;
return HvAUX(hv);
}
@@ -6011,7 +6011,7 @@ Perl_sv_get_backrefs(SV *const sv)
/* find slot to store array or singleton backref */
if (SvTYPE(sv) == SVt_PVHV) {
- if (SvOOK(sv)) {
+ if (HvHasAUX(sv)) {
struct xpvhv_aux * const iter = HvAUX((HV *)sv);
backrefs = (SV *)iter->xhv_backreferences;
}
@@ -6118,7 +6118,7 @@ Perl_sv_del_backref(pTHX_ SV *const tsv, SV *const sv)
PERL_ARGS_ASSERT_SV_DEL_BACKREF;
if (SvTYPE(tsv) == SVt_PVHV) {
- if (SvOOK(tsv))
+ if (HvHasAUX(tsv))
svp = (SV**)Perl_hv_backreferences_p(aTHX_ MUTABLE_HV(tsv));
}
else if (SvIS_FREED(tsv) && PL_phase == PERL_PHASE_DESTRUCT) {
@@ -6841,7 +6841,7 @@ Perl_sv_clear(pTHX_ SV *const orig_sv)
U32 arena_index;
const struct body_details *sv_type_details;
- if (type == SVt_PVHV && SvOOK(sv)) {
+ if (type == SVt_PVHV && HvHasAUX(sv)) {
arena_index = HVAUX_ARENA_ROOT_IX;
sv_type_details = &fake_hv_with_aux;
}
@@ -6963,7 +6963,7 @@ S_curse(pTHX_ SV * const sv, const bool check_refcnt) {
CV* destructor = NULL;
struct mro_meta *meta;
- assert (SvOOK(stash));
+ assert (HvHasAUX(stash));
DEBUG_o( Perl_deb(aTHX_ "Looking for DESTROY method for %s\n",
HvNAME(stash)) );
@@ -14371,7 +14371,7 @@ S_sv_dup_common(pTHX_ const SV *const ssv, CLONE_PARAMS *const param)
break;
case SVt_PVHV:
- if (SvOOK(ssv)) {
+ if (HvHasAUX(ssv)) {
sv_type_details = &fake_hv_with_aux;
#ifdef PURIFY
new_body = new_NOARENA(sv_type_details);
@@ -14555,7 +14555,7 @@ S_sv_dup_common(pTHX_ const SV *const ssv, CLONE_PARAMS *const param)
? he_dup(source, FALSE, param) : 0;
++i;
}
- if (SvOOK(ssv)) {
+ if (HvHasAUX(ssv)) {
const struct xpvhv_aux * const saux = HvAUX(ssv);
struct xpvhv_aux * const daux = HvAUX(dsv);
/* This flag isn't copied. */