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
/*
#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
#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)
skip_symbols [qw(
PL_madskills
PL_xmlfp
+ Perl_pad_peg
)];
}
#define PAD_MAX 999999999
-
+#ifdef PERL_MAD
+void pad_peg(const char* s) {
+ static int pegcnt;
+ pegcnt++;
+}
+#endif
/*
=for apidoc pad_new
I32 ix;
const PADLIST * const padlist = CvPADLIST(cv);
+ pad_peg("pad_undef");
if (!padlist)
return;
if (SvIS_FREED(padlist)) /* may be during global destruction */
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);
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)
* 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));
#endif
+#ifdef PERL_MAD
+PERL_CALLCONV void Perl_pad_peg(const char* s)
+ __attribute__nonnull__(1);
+
+#endif
END_EXTERN_C
/*