summaryrefslogtreecommitdiff
path: root/av.h
diff options
context:
space:
mode:
authorGurusamy Sarathy <gsar@cpan.org>1999-09-10 18:21:53 +0000
committerGurusamy Sarathy <gsar@cpan.org>1999-09-10 18:21:53 +0000
commit61b858cf81827e2f46d951d0f5d8839be617175b (patch)
tree315367b6ff9359d55adff375ee2d47093072876c /av.h
parent8f4c9bddda8c3c457a7859b805e0044be0e74993 (diff)
downloadperl-61b858cf81827e2f46d951d0f5d8839be617175b.tar.gz
note about AVf_*
p4raw-id: //depot/perl@4123
Diffstat (limited to 'av.h')
-rw-r--r--av.h20
1 files changed, 20 insertions, 0 deletions
diff --git a/av.h b/av.h
index bacf614390..f537d9eadb 100644
--- a/av.h
+++ b/av.h
@@ -21,8 +21,28 @@ struct xpvav {
U8 xav_flags;
};
+
+/* AVf_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
+ * 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 has 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
+ */
#define AVf_REAL 1 /* free old entries */
#define AVf_REIFY 2 /* can become real */
+
+/* XXX this is not used anywhere */
#define AVf_REUSED 4 /* got undeffed--don't turn old memory into SVs now */
#define Nullav Null(AV*)