-#define AVf_REAL 1 /* free old entries */
-#define AVf_REIFY 2 /* can become real */
-#define AVf_REUSED 4 /* got undeffed--don't turn old memory into SVs now */
+typedef struct {
+ _XPVAV_ALLOCATED_HEAD;
+ _XPVMG_HEAD;
+} xpvav_allocated;
+
+#undef _XPVAV_ALLOCATED_HEAD
+#undef _XPVAV_HEAD
+
+/* SV** xav_alloc; */
+#define xav_alloc xiv_u.xivu_p1
+/* SV* xav_arylen; */
+
+/* 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.
+ *
+ * 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.
+ *
+ * Note that the Perl stack and @DB::args have neither flag set. (Thus,
+ * items that go on the stack are never refcounted.)
+ *
+ * These internal details are subject to change any time. AV
+ * manipulations external to perl should not care about any of this.
+ * GSAR 1999-09-10
+ */
+
+/*
+=head1 Handy Values
+
+=for apidoc AmU||Nullav
+Null AV pointer.
+
+=head1 Array Manipulation Functions
+
+=for apidoc Am|int|AvFILL|AV* av
+Same as C<av_len()>. Deprecated, use C<av_len()> instead.
+
+=cut
+*/