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.