{SVf_OOK, "OOK,"},
{SVf_FAKE, "FAKE,"},
{SVf_READONLY, "READONLY,"},
- {SVf_IsCOW, "IsCOW,"},
{SVf_BREAK, "BREAK,"},
- {SVf_AMAGIC, "OVERLOAD,"},
{SVp_IOK, "pIOK,"},
{SVp_NOK, "pNOK,"},
{SVp_POK, "pPOK,"}
{SVphv_SHAREKEYS, "SHAREKEYS,"},
{SVphv_LAZYDEL, "LAZYDEL,"},
{SVphv_HASKFLAGS, "HASKFLAGS,"},
+ {SVf_AMAGIC, "OVERLOAD,"},
{SVphv_CLONEABLE, "CLONEABLE,"}
};
sv_catpv(d, "ROK,");
if (SvWEAKREF(sv)) sv_catpv(d, "WEAKREF,");
}
+ if (flags & SVf_IsCOW && type != SVt_PVHV) sv_catpvs(d, "IsCOW,");
append_flags(d, flags, second_sv_flags_names);
if (flags & SVp_SCREAM && type != SVt_PVHV && !isGV_with_GP(sv)
&& type != SVt_PVAV) {
if (SvREADONLY(sv))
Perl_croak_no_modify();
- else if (SvIsCOW(sv))
+ else if (SvIsCOW(sv) && LIKELY(SvTYPE(sv) != SVt_PVHV))
S_sv_uncow(aTHX_ sv, flags);
if (SvROK(sv))
sv_unref_flags(sv, flags);
GvIMPORTED_CV_on() if it needs to be
expanded to a real GV */
#define SVpad_NAMELIST SVp_SCREAM /* AV is a padnamelist */
-#define SVf_IsCOW 0x00010000 /* copy on write (shared hash key if
- SvLEN == 0) */
#define SVs_PADTMP 0x00020000 /* in use as tmp; only if ! SVs_PADMY */
#define SVs_PADSTALE 0x00020000 /* lexical has gone out of scope;
only valid for SVs_PADMY */
#define PRIVSHIFT 4 /* (SVp_?OK >> PRIVSHIFT) == SVf_?OK */
+/* Note that SVf_AMAGIC is now only set on stashes. */
#define SVf_AMAGIC 0x10000000 /* has magical overloaded methods */
-
-/* note that SVf_AMAGIC is now only set on stashes, so this bit is free
- * for non-HV SVs */
+#define SVf_IsCOW 0x10000000 /* copy on write (shared hash key if
+ SvLEN == 0) */
/* Ensure this value does not clash with the GV_ADD* flags in gv.h, or the
CV_CKPROTO_* flags in op.c, or the padadd_* flags in pad.h: */