Add an AV field to PADLIST to store named params
authorPeter Martini <PeterCMartini@GMail.com>
Sat, 8 Sep 2012 03:37:11 +0000 (23:37 -0400)
committerJesse Luehrs <doy@tozt.net>
Thu, 13 Sep 2012 00:19:48 +0000 (19:19 -0500)
pad.c
pad.h

index fd75d42..232f83e 100644 (file)
--- a/pad.c
+++ b/pad.c
@@ -292,6 +292,7 @@ Perl_pad_new(pTHX_ int flags)
     Newx(ary, 2, PAD *);
     PadlistMAX(padlist) = 1;
     PadlistARRAY(padlist) = ary;
+    PadlistNAMEDPARAMS(padlist) = NULL;
     ary[0] = padname;
     ary[1] = pad;
 
diff --git a/pad.h b/pad.h
index f65af17..338a135 100644 (file)
--- a/pad.h
+++ b/pad.h
@@ -33,6 +33,7 @@ struct padlist {
     PAD **     xpadl_alloc;    /* pointer to beginning of array of AVs */
     U32                xpadl_id;       /* Semi-unique ID, shared between clones */
     U32                xpadl_outid;    /* ID of outer pad */
+    AV *        xpadl_names;    /* Named parameters in the sub */
 };
 
 
@@ -282,6 +283,7 @@ Restore the old pad saved into the local variable opad by PAD_SAVE_LOCAL()
 #define PadlistNAMES(pl)       (*PadlistARRAY(pl))
 #define PadlistNAMESARRAY(pl)  PadnamelistARRAY(PadlistNAMES(pl))
 #define PadlistNAMESMAX(pl)    PadnamelistMAX(PadlistNAMES(pl))
+#define PadlistNAMEDPARAMS(pl)  (pl)->xpadl_names
 #define PadlistREFCNT(pl)      1       /* reserved for future use */
 
 #define PadnamelistARRAY(pnl)  AvARRAY(pnl)