Change 27419 by [EMAIL PROTECTED] on 2006/03/08 13:40:48

        Add MAD changes to pad code (new function Perl_pad_peg)

Affected files ...

... //depot/perl/embed.fnc#323 edit
... //depot/perl/embed.h#565 edit
... //depot/perl/makedef.pl#193 edit
... //depot/perl/pad.c#95 edit
... //depot/perl/pad.h#21 edit
... //depot/perl/proto.h#670 edit

Differences ...

==== //depot/perl/embed.fnc#323 (text) ====
Index: perl/embed.fnc
--- perl/embed.fnc#322~27381~   2006-03-05 10:40:59.000000000 -0800
+++ perl/embed.fnc      2006-03-08 05:40:48.000000000 -0800
@@ -1646,6 +1646,9 @@
 Apo    |void*  |my_cxt_init    |NN int *index|size_t size
 #endif
 
+#ifdef PERL_MAD
+Mnp    |void   |pad_peg        |NN const char* s
+#endif
 
 END_EXTERN_C
 /*

==== //depot/perl/embed.h#565 (text+w) ====
Index: perl/embed.h
--- perl/embed.h#564~27377~     2006-03-05 03:53:55.000000000 -0800
+++ perl/embed.h        2006-03-08 05:40:48.000000000 -0800
@@ -1721,6 +1721,11 @@
 #endif
 #ifdef PERL_IMPLICIT_CONTEXT
 #endif
+#ifdef PERL_MAD
+#ifdef PERL_CORE
+#define pad_peg                        Perl_pad_peg
+#endif
+#endif
 #define ck_anoncode            Perl_ck_anoncode
 #define ck_bitop               Perl_ck_bitop
 #define ck_chdir               Perl_ck_chdir
@@ -3796,6 +3801,11 @@
 #endif
 #ifdef PERL_IMPLICIT_CONTEXT
 #endif
+#ifdef PERL_MAD
+#ifdef PERL_CORE
+#define pad_peg                        Perl_pad_peg
+#endif
+#endif
 #define ck_anoncode(a)         Perl_ck_anoncode(aTHX_ a)
 #define ck_bitop(a)            Perl_ck_bitop(aTHX_ a)
 #define ck_chdir(a)            Perl_ck_chdir(aTHX_ a)

==== //depot/perl/makedef.pl#193 (text) ====
Index: perl/makedef.pl
--- perl/makedef.pl#192~27413~  2006-03-08 01:36:50.000000000 -0800
+++ perl/makedef.pl     2006-03-08 05:40:48.000000000 -0800
@@ -841,6 +841,7 @@
     skip_symbols [qw(
                    PL_madskills
                    PL_xmlfp
+                   Perl_pad_peg
                    )];
 }
 

==== //depot/perl/pad.c#95 (text) ====
Index: perl/pad.c
--- perl/pad.c#94~27334~        2006-02-27 03:06:30.000000000 -0800
+++ perl/pad.c  2006-03-08 05:40:48.000000000 -0800
@@ -113,7 +113,12 @@
 
 #define PAD_MAX 999999999
 
-
+#ifdef PERL_MAD
+void pad_peg(const char* s) {
+    static int pegcnt;
+    pegcnt++;
+}
+#endif
 
 /*
 =for apidoc pad_new
@@ -233,6 +238,7 @@
     I32 ix;
     const PADLIST * const padlist = CvPADLIST(cv);
 
+    pad_peg("pad_undef");
     if (!padlist)
        return;
     if (SvIS_FREED(padlist)) /* may be during global destruction */
@@ -468,6 +474,7 @@
     dVAR;
     PADOFFSET ix;
     SV* const name = newSV(0);
+    pad_peg("add_anon");
     sv_upgrade(name, SVt_PVNV);
     sv_setpvn(name, "&", 1);
     SvIV_set(name, -1);
@@ -584,6 +591,7 @@
     const AV *nameav;
     SV **name_svp;
 
+    pad_peg("pad_findmy");
     offset =  pad_findlex(name, PL_compcv, PL_cop_seqmax, 1,
                NULL, &out_sv, &out_flags);
     if (offset != NOT_IN_PAD) 

==== //depot/perl/pad.h#21 (text) ====
Index: perl/pad.h
--- perl/pad.h#20~27306~        2006-02-24 03:52:28.000000000 -0800
+++ perl/pad.h  2006-03-08 05:40:48.000000000 -0800
@@ -50,14 +50,20 @@
  * whether PL_comppad and PL_curpad are consistent and whether they have
  * active values */
 
+#ifndef PERL_MAD
+#  define pad_peg(label)
+#endif
+
 #ifdef DEBUGGING
 #  define ASSERT_CURPAD_LEGAL(label) \
+    pad_peg(label); \
     if (PL_comppad ? (AvARRAY(PL_comppad) != PL_curpad) : (PL_curpad != 0))  \
        Perl_croak(aTHX_ "panic: illegal pad in %s: 0x%"UVxf"[0x%"UVxf"]",\
            label, PTR2UV(PL_comppad), PTR2UV(PL_curpad));
 
 
 #  define ASSERT_CURPAD_ACTIVE(label) \
+    pad_peg(label); \
     if (!PL_comppad || (AvARRAY(PL_comppad) != PL_curpad))               \
        Perl_croak(aTHX_ "panic: invalid pad in %s: 0x%"UVxf"[0x%"UVxf"]",\
            label, PTR2UV(PL_comppad), PTR2UV(PL_curpad));

==== //depot/perl/proto.h#670 (text+w) ====
Index: perl/proto.h
--- perl/proto.h#669~27381~     2006-03-05 10:40:59.000000000 -0800
+++ perl/proto.h        2006-03-08 05:40:48.000000000 -0800
@@ -4268,6 +4268,11 @@
 
 #endif
 
+#ifdef PERL_MAD
+PERL_CALLCONV void     Perl_pad_peg(const char* s)
+                       __attribute__nonnull__(1);
+
+#endif
 
 END_EXTERN_C
 /*
End of Patch.

Reply via email to