} xiv_u;
MAGIC* xmg_magic; /* magic for scalar array */
HV* xmg_stash; /* class package */
- SV* xav_arylen;
};
-#if !defined(PERL_EXPERIMENTAL_LAYOUT)
+#if 0
typedef struct xpvav xpvav_allocated;
#else
typedef struct {
} xiv_u;
MAGIC* xmg_magic; /* magic for scalar array */
HV* xmg_stash; /* class package */
- SV* xav_arylen;
} xpvav_allocated;
#endif
#define xav_alloc xiv_u.xivu_p1
/* SV* xav_arylen; */
-/* AVf_REAL is set for all AVs whose xav_array contents are refcounted.
+/* SVpav_REAL is set for all AVs whose xav_array contents are refcounted.
* Some things like "@_" and the scratchpad list do not set this, to
* indicate that they are cheating (for efficiency) by not refcounting
* the AV's contents.
*
- * AVf_REIFY is only meaningful on such "fake" AVs (i.e. where AVf_REAL
+ * SVpav_REIFY is only meaningful on such "fake" AVs (i.e. where SVpav_REAL
* is not set). It indicates that the fake AV is capable of becoming
* real if the array needs to be modified in some way. Functions that
* modify fake AVs check both flags to call av_reify() as appropriate.
#define AvALLOC(av) (*((SV***)&((XPVAV*) SvANY(av))->xav_alloc))
#define AvMAX(av) ((XPVAV*) SvANY(av))->xav_max
#define AvFILLp(av) ((XPVAV*) SvANY(av))->xav_fill
-#define AvARYLEN(av) (*((SV**)&((XPVAV*) SvANY(av))->xav_arylen))
+#define AvARYLEN(av) (*Perl_av_arylen_p(aTHX_ (AV*)av))
#define AvREAL(av) (SvFLAGS(av) & SVpav_REAL)
#define AvREAL_on(av) (SvFLAGS(av) |= SVpav_REAL)