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.

Reply via email to