+/* CX_ARGARRAY(cx): the AV at pad[0] of the CV associated with CXt_SUB
+ * context cx */
+
+#if XSH_HAS_PERL(5, 23, 8)
+# define CX_ARGARRAY(cx) \
+ ((AV*)(AvARRAY(MUTABLE_AV( \
+ PadlistARRAY(CvPADLIST(cx->blk_sub.cv))[ \
+ CvDEPTH(cx->blk_sub.cv)]))[0]))
+/* XXX is the new def ok to use in lvalue cxt? Formerly it assigned to
+ * blk_sub.argarray, now to pad[0]. Does this matter?
+ */
+# define CX_ARGARRAY_set(cx,ary) \
+ (AvARRAY(MUTABLE_AV( \
+ PadlistARRAY(CvPADLIST(cx->blk_sub.cv))[ \
+ CvDEPTH(cx->blk_sub.cv)]))[0] = (SV*)(ary))
+#else
+# define CX_ARGARRAY(cx) (cx->blk_sub.argarray)
+# define CX_ARGARRAY_set(cx,ary) (cx->blk_sub.argarray = (ary))
+#endif
+
+