Change 17804 by [EMAIL PROTECTED] on 2002/08/29 13:29:43
Subject: [PATCH] B::check_av() ; B::Deparse for CHECK blocks
From: Rafael Garcia-Suarez <[EMAIL PROTECTED]>
Date: Tue, 27 Aug 2002 23:36:53 +0200
Message-Id: <[EMAIL PROTECTED]>
Affected files ...
.... //depot/perl/embedvar.h#149 edit
.... //depot/perl/ext/B/B.pm#47 edit
.... //depot/perl/ext/B/B.xs#76 edit
.... //depot/perl/ext/B/B/Deparse.pm#121 edit
.... //depot/perl/intrpvar.h#107 edit
.... //depot/perl/perl.c#448 edit
.... //depot/perl/perlapi.h#71 edit
.... //depot/perl/sv.c#580 edit
Differences ...
==== //depot/perl/embedvar.h#149 (text+w) ====
Index: perl/embedvar.h
--- perl/embedvar.h#148~17798~ Thu Aug 29 04:44:00 2002
+++ perl/embedvar.h Thu Aug 29 06:29:43 2002
@@ -210,6 +210,7 @@
#define PL_bufend (PERL_GET_INTERP->Ibufend)
#define PL_bufptr (PERL_GET_INTERP->Ibufptr)
#define PL_checkav (PERL_GET_INTERP->Icheckav)
+#define PL_checkav_save (PERL_GET_INTERP->Icheckav_save)
#define PL_collation_ix (PERL_GET_INTERP->Icollation_ix)
#define PL_collation_name (PERL_GET_INTERP->Icollation_name)
#define PL_collation_standard (PERL_GET_INTERP->Icollation_standard)
@@ -512,6 +513,7 @@
#define PL_bufend (vTHX->Ibufend)
#define PL_bufptr (vTHX->Ibufptr)
#define PL_checkav (vTHX->Icheckav)
+#define PL_checkav_save (vTHX->Icheckav_save)
#define PL_collation_ix (vTHX->Icollation_ix)
#define PL_collation_name (vTHX->Icollation_name)
#define PL_collation_standard (vTHX->Icollation_standard)
@@ -817,6 +819,7 @@
#define PL_Ibufend PL_bufend
#define PL_Ibufptr PL_bufptr
#define PL_Icheckav PL_checkav
+#define PL_Icheckav_save PL_checkav_save
#define PL_Icollation_ix PL_collation_ix
#define PL_Icollation_name PL_collation_name
#define PL_Icollation_standard PL_collation_standard
==== //depot/perl/ext/B/B.pm#47 (text) ====
Index: perl/ext/B/B.pm
--- perl/ext/B/B.pm#46~17797~ Thu Aug 29 03:55:41 2002
+++ perl/ext/B/B.pm Thu Aug 29 06:29:43 2002
@@ -21,7 +21,7 @@
amagic_generation perlstring
walkoptree_slow walkoptree walkoptree_exec walksymtable
parents comppadlist sv_undef compile_stats timing_info
- begin_av init_av end_av regex_padav);
+ begin_av init_av check_av end_av regex_padav);
sub OPf_KIDS ();
use strict;
@@ -373,6 +373,10 @@
=item C<init_av>
Returns the AV object (i.e. in class B::AV) representing INIT blocks.
+
+=item check_av
+
+Returns the AV object (i.e. in class B::AV) representing CHECK blocks.
=item begin_av
==== //depot/perl/ext/B/B.xs#76 (text) ====
Index: perl/ext/B/B.xs
--- perl/ext/B/B.xs#75~16666~ Fri May 17 14:46:04 2002
+++ perl/ext/B/B.xs Thu Aug 29 06:29:43 2002
@@ -446,6 +446,7 @@
#define B_main_cv() PL_main_cv
#define B_init_av() PL_initav
+#define B_check_av() PL_checkav_save
#define B_begin_av() PL_beginav_save
#define B_end_av() PL_endav
#define B_main_root() PL_main_root
@@ -461,6 +462,9 @@
B::AV
B_init_av()
+
+B::AV
+B_check_av()
B::AV
B_begin_av()
==== //depot/perl/ext/B/B/Deparse.pm#121 (text) ====
Index: perl/ext/B/B/Deparse.pm
--- perl/ext/B/B/Deparse.pm#120~17682~ Mon Aug 5 08:04:54 2002
+++ perl/ext/B/B/Deparse.pm Thu Aug 29 06:29:43 2002
@@ -553,9 +553,10 @@
print qq(BEGIN { \$/ = $fs; \$\\ = $bs; }\n);
}
my @BEGINs = B::begin_av->isa("B::AV") ? B::begin_av->ARRAY : ();
+ my @CHECKs = B::check_av->isa("B::AV") ? B::check_av->ARRAY : ();
my @INITs = B::init_av->isa("B::AV") ? B::init_av->ARRAY : ();
my @ENDs = B::end_av->isa("B::AV") ? B::end_av->ARRAY : ();
- for my $block (@BEGINs, @INITs, @ENDs) {
+ for my $block (@BEGINs, @CHECKs, @INITs, @ENDs) {
$self->todo($block, 0);
}
$self->stash_subs();
==== //depot/perl/intrpvar.h#107 (text) ====
Index: perl/intrpvar.h
--- perl/intrpvar.h#106~16592~ Tue May 14 08:21:39 2002
+++ perl/intrpvar.h Thu Aug 29 06:29:43 2002
@@ -522,7 +522,8 @@
PERLVAR(Isort_RealCmp, SVCOMPARE_t)
+PERLVARI(Icheckav_save, AV*, Nullav) /* save CHECK{}s when compiling */
+
/* New variables must be added to the very end for binary compatibility.
* XSUB.h provides wrapper functions via perlapi.h that make this
* irrelevant, but not all code may be expected to #include XSUB.h. */
-
==== //depot/perl/perl.c#448 (text) ====
Index: perl/perl.c
--- perl/perl.c#447~17798~ Thu Aug 29 04:44:00 2002
+++ perl/perl.c Thu Aug 29 06:29:43 2002
@@ -628,11 +628,13 @@
SvREFCNT_dec(PL_beginav_save);
SvREFCNT_dec(PL_endav);
SvREFCNT_dec(PL_checkav);
+ SvREFCNT_dec(PL_checkav_save);
SvREFCNT_dec(PL_initav);
PL_beginav = Nullav;
PL_beginav_save = Nullav;
PL_endav = Nullav;
PL_checkav = Nullav;
+ PL_checkav_save = Nullav;
PL_initav = Nullav;
/* shortcuts just get cleared */
@@ -4007,11 +4009,19 @@
while (AvFILL(paramList) >= 0) {
cv = (CV*)av_shift(paramList);
- if (PL_savebegin && (paramList == PL_beginav)) {
+ if (PL_savebegin) {
+ if (paramList == PL_beginav) {
/* save PL_beginav for compiler */
- if (! PL_beginav_save)
- PL_beginav_save = newAV();
- av_push(PL_beginav_save, (SV*)cv);
+ if (! PL_beginav_save)
+ PL_beginav_save = newAV();
+ av_push(PL_beginav_save, (SV*)cv);
+ }
+ else if (paramList == PL_checkav) {
+ /* save PL_checkav for compiler */
+ if (! PL_checkav_save)
+ PL_checkav_save = newAV();
+ av_push(PL_checkav_save, (SV*)cv);
+ }
} else {
SAVEFREESV(cv);
}
==== //depot/perl/perlapi.h#71 (text+w) ====
Index: perl/perlapi.h
--- perl/perlapi.h#70~17798~ Thu Aug 29 04:44:00 2002
+++ perl/perlapi.h Thu Aug 29 06:29:43 2002
@@ -148,6 +148,8 @@
#define PL_bufptr (*Perl_Ibufptr_ptr(aTHX))
#undef PL_checkav
#define PL_checkav (*Perl_Icheckav_ptr(aTHX))
+#undef PL_checkav_save
+#define PL_checkav_save (*Perl_Icheckav_save_ptr(aTHX))
#undef PL_collation_ix
#define PL_collation_ix (*Perl_Icollation_ix_ptr(aTHX))
#undef PL_collation_name
==== //depot/perl/sv.c#580 (text) ====
Index: perl/sv.c
--- perl/sv.c#579~17747~ Wed Aug 21 17:11:34 2002
+++ perl/sv.c Thu Aug 29 06:29:43 2002
@@ -10233,6 +10233,7 @@
PL_beginav = av_dup_inc(proto_perl->Ibeginav, param);
PL_beginav_save = av_dup_inc(proto_perl->Ibeginav_save, param);
+ PL_checkav_save = av_dup_inc(proto_perl->Icheckav_save, param);
PL_endav = av_dup_inc(proto_perl->Iendav, param);
PL_checkav = av_dup_inc(proto_perl->Icheckav, param);
PL_initav = av_dup_inc(proto_perl->Iinitav, param);
End of Patch.