This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
[Merge] Eliminate IS_PADGV etc.
authorFather Chrysostomos <sprout@cpan.org>
Thu, 18 Sep 2014 06:40:03 +0000 (23:40 -0700)
committerFather Chrysostomos <sprout@cpan.org>
Thu, 18 Sep 2014 06:40:03 +0000 (23:40 -0700)
The core no longer uses IS_PADGV, IS_PADCONST, or GvIN_PAD.  They were
no longer needed and never really worked properly.

dump.c
gv.h
op.c
op.h
pad.c
pp.c
pp_ctl.c
pp_hot.c
pp_sort.c
regexec.c

diff --git a/dump.c b/dump.c
index 924fed0..3dff2f2 100644 (file)
--- a/dump.c
+++ b/dump.c
@@ -1346,7 +1346,6 @@ const struct flag_to_name gp_flags_names[] = {
     {GVf_INTRO, "INTRO,"},
     {GVf_MULTI, "MULTI,"},
     {GVf_ASSUMECV, "ASSUMECV,"},
-    {GVf_IN_PAD, "IN_PAD,"}
 };
 
 const struct flag_to_name gp_flags_imported_names[] = {
diff --git a/gv.h b/gv.h
index 6e3295c..ff24d91 100644 (file)
--- a/gv.h
+++ b/gv.h
@@ -156,7 +156,7 @@ Return the CV from the GV.
 #define GVf_INTRO      0x01
 #define GVf_MULTI      0x02
 #define GVf_ASSUMECV   0x04
-#define GVf_IN_PAD     0x08
+/*     UNUSED          0x08 */
 #define GVf_IMPORTED   0xF0
 #define GVf_IMPORTED_SV          0x10
 #define GVf_IMPORTED_AV          0x20
@@ -195,11 +195,10 @@ Return the CV from the GV.
 #define GvIMPORTED_CV_on(gv)   (GvFLAGS(gv) |= GVf_IMPORTED_CV)
 #define GvIMPORTED_CV_off(gv)  (GvFLAGS(gv) &= ~GVf_IMPORTED_CV)
 
-#define GvIN_PAD(gv)           (GvFLAGS(gv) & GVf_IN_PAD)
-#define GvIN_PAD_on(gv)                (GvFLAGS(gv) |= GVf_IN_PAD)
-#define GvIN_PAD_off(gv)       (GvFLAGS(gv) &= ~GVf_IN_PAD)
-
 #ifndef PERL_CORE
+#  define GvIN_PAD(gv)         0
+#  define GvIN_PAD_on(gv)      NOOP
+#  define GvIN_PAD_off(gv)     NOOP
 #  define Nullgv Null(GV*)
 #endif
 
diff --git a/op.c b/op.c
index fec74ca..b8dde1c 100644 (file)
--- a/op.c
+++ b/op.c
@@ -807,8 +807,6 @@ Perl_op_clear(pTHX_ OP *o)
                SvREFCNT_inc_simple_void(gv);
 #ifdef USE_ITHREADS
            if (cPADOPo->op_padix > 0) {
-               /* No GvIN_PAD_off(cGVOPo_gv) here, because other references
-                * may still exist on the pad */
                pad_swipe(cPADOPo->op_padix, TRUE);
                cPADOPo->op_padix = 0;
            }
@@ -875,8 +873,6 @@ Perl_op_clear(pTHX_ OP *o)
     case OP_PUSHRE:
 #ifdef USE_ITHREADS
         if (cPMOPo->op_pmreplrootu.op_pmtargetoff) {
-           /* No GvIN_PAD_off here, because other references may still
-            * exist on the pad */
            pad_swipe(cPMOPo->op_pmreplrootu.op_pmtargetoff, TRUE);
        }
 #else
@@ -5186,7 +5182,7 @@ Perl_newPADOP(pTHX_ I32 type, I32 flags, SV *sv)
     padop->op_type = (OPCODE)type;
     padop->op_ppaddr = PL_ppaddr[type];
     padop->op_padix =
-       pad_alloc(type, IS_PADGV(sv) ? SVf_READONLY : SVs_PADTMP);
+       pad_alloc(type, isGV(sv) ? SVf_READONLY : SVs_PADTMP);
     SvREFCNT_dec(PAD_SVl(padop->op_padix));
     PAD_SETSV(padop->op_padix, sv);
     assert(sv);
@@ -5219,7 +5215,6 @@ Perl_newGVOP(pTHX_ I32 type, I32 flags, GV *gv)
     PERL_ARGS_ASSERT_NEWGVOP;
 
 #ifdef USE_ITHREADS
-    GvIN_PAD_on(gv);
     return newPADOP(type, flags, SvREFCNT_inc_simple_NN(gv));
 #else
     return newSVOP(type, flags, SvREFCNT_inc_simple_NN(gv));
@@ -9026,7 +9021,6 @@ Perl_ck_rvconst(pTHX_ OP *o)
            assert (sizeof(PADOP) <= sizeof(SVOP));
            kPADOP->op_padix = pad_alloc(OP_GV, SVf_READONLY);
            SvREFCNT_dec(PAD_SVl(kPADOP->op_padix));
-           if (isGV(gv)) GvIN_PAD_on(gv);
            PAD_SETSV(kPADOP->op_padix, MUTABLE_SV(SvREFCNT_inc_simple_NN(gv)));
 #else
            kid->op_sv = SvREFCNT_inc_simple_NN(gv);
diff --git a/op.h b/op.h
index 7b86d59..139375d 100644 (file)
--- a/op.h
+++ b/op.h
@@ -390,18 +390,21 @@ struct loop {
 
 #ifdef USE_ITHREADS
 #  define      cGVOPx_gv(o)    ((GV*)PAD_SVl(cPADOPx(o)->op_padix))
-#  define      IS_PADGV(v)     (v && SvTYPE(v) == SVt_PVGV && isGV_with_GP(v) \
-                                && GvIN_PAD(v))
-#  define      IS_PADCONST(v) \
+#  ifndef PERL_CORE
+#    define    IS_PADGV(v)     (v && isGV(v))
+#    define    IS_PADCONST(v) \
        (v && (SvREADONLY(v) || (SvIsCOW(v) && !SvLEN(v))))
+#  endif
 #  define      cSVOPx_sv(v)    (cSVOPx(v)->op_sv \
                                 ? cSVOPx(v)->op_sv : PAD_SVl((v)->op_targ))
 #  define      cSVOPx_svp(v)   (cSVOPx(v)->op_sv \
                                 ? &cSVOPx(v)->op_sv : &PAD_SVl((v)->op_targ))
 #else
 #  define      cGVOPx_gv(o)    ((GV*)cSVOPx(o)->op_sv)
-#  define      IS_PADGV(v)     FALSE
-#  define      IS_PADCONST(v)  FALSE
+#  ifndef PERL_CORE
+#    define    IS_PADGV(v)     FALSE
+#    define    IS_PADCONST(v)  FALSE
+#  endif
 #  define      cSVOPx_sv(v)    (cSVOPx(v)->op_sv)
 #  define      cSVOPx_svp(v)   (&cSVOPx(v)->op_sv)
 #endif
diff --git a/pad.c b/pad.c
index a342349..fafb946 100644 (file)
--- a/pad.c
+++ b/pad.c
@@ -773,8 +773,7 @@ Perl_pad_alloc(pTHX_ I32 optype, U32 tmptype)
 #else
                    (SVs_PADMY|SVs_PADTMP)
 #endif
-                ) &&
-               !IS_PADGV(sv))
+                ))
                break;
        }
        if (konst) {
@@ -1779,8 +1778,7 @@ Perl_pad_tidy(pTHX_ padtidy_type type)
             * pad are anonymous subs, constants and GVs.
             * The rest are created anew during cloning.
             */
-           if (!PL_curpad[ix] || SvIMMORTAL(PL_curpad[ix])
-                || IS_PADGV(PL_curpad[ix]))
+           if (!PL_curpad[ix] || SvIMMORTAL(PL_curpad[ix]))
                continue;
            namesv = namep[ix];
            if (!(PadnamePV(namesv) &&
@@ -1803,8 +1801,7 @@ Perl_pad_tidy(pTHX_ padtidy_type type)
        PADOFFSET ix;
        for (ix = AvFILLp(PL_comppad); ix > 0; ix--) {
            if (!namep[ix]) namep[ix] = &PL_sv_undef;
-           if (!PL_curpad[ix] || SvIMMORTAL(PL_curpad[ix])
-                || IS_PADGV(PL_curpad[ix]) || IS_PADCONST(PL_curpad[ix]))
+           if (!PL_curpad[ix] || SvIMMORTAL(PL_curpad[ix]))
                continue;
            if (SvPADMY(PL_curpad[ix]) && !SvFAKE(namep[ix])) {
                /* This is a work around for how the current implementation of
@@ -2132,7 +2129,7 @@ S_cv_clone_pad(pTHX_ CV *proto, CV *cv, CV *outside, bool newcv)
            }
          }
        }
-       else if (IS_PADGV(ppad[ix]) || (namesv && PadnamePV(namesv))) {
+       else if (namesv && PadnamePV(namesv)) {
            sv = SvREFCNT_inc_NN(ppad[ix]);
        }
        else {
@@ -2383,7 +2380,7 @@ Perl_pad_push(pTHX_ PADLIST *padlist, int depth)
                    SvPADMY_on(sv);
                }
            }
-           else if (IS_PADGV(oldpad[ix]) || PadnamePV(names[ix])) {
+           else if (PadnamePV(names[ix])) {
                av_store(newpad, ix, SvREFCNT_inc_NN(oldpad[ix]));
            }
            else {
@@ -2519,8 +2516,7 @@ Perl_padlist_dup(pTHX_ PADLIST *srcpad, CLONE_PARAMS *param)
                        }
                    }
                }
-               else if (IS_PADGV(oldpad[ix])
-                     || (  names_fill >= ix && names[ix]
+               else if ((  names_fill >= ix && names[ix]
                         && PadnamePV(names[ix])  )) {
                    pad1a[ix] = sv_dup_inc(oldpad[ix], param);
                }
diff --git a/pp.c b/pp.c
index 547731f..0e92254 100644 (file)
--- a/pp.c
+++ b/pp.c
@@ -573,7 +573,6 @@ S_refto(pTHX_ SV *sv)
        SvREFCNT_inc_void_NN(sv);
     }
     else if (SvPADTMP(sv)) {
-        assert(!IS_PADGV(sv));
         sv = newSVsv(sv);
     }
     else {
@@ -1709,7 +1708,6 @@ PP(pp_repeat)
 #else
                 if (*SP) {
                    if (mod && SvPADTMP(*SP)) {
-                       assert(!IS_PADGV(*SP));
                        *SP = sv_mortalcopy(*SP);
                    }
                   SvTEMP_off((*SP));
@@ -4958,7 +4956,6 @@ PP(pp_lslice)
            if (!(*lelem = firstrelem[ix]))
                *lelem = &PL_sv_undef;
            else if (mod && SvPADTMP(*lelem)) {
-                assert(!IS_PADGV(*lelem));
                *lelem = firstrelem[ix] = sv_mortalcopy(*lelem);
             }
        }
index 4ceca53..95ba848 100644 (file)
--- a/pp_ctl.c
+++ b/pp_ctl.c
@@ -927,7 +927,6 @@ PP(pp_grepstart)
 
     src = PL_stack_base[*PL_markstack_ptr];
     if (SvPADTMP(src)) {
-        assert(!IS_PADGV(src));
        src = PL_stack_base[*PL_markstack_ptr] = sv_mortalcopy(src);
        PL_tmps_floor++;
     }
@@ -1080,7 +1079,6 @@ PP(pp_mapwhile)
        /* set $_ to the new source item */
        src = PL_stack_base[PL_markstack_ptr[-1]];
        if (SvPADTMP(src)) {
-            assert(!IS_PADGV(src));
             src = sv_mortalcopy(src);
         }
        SvTEMP_off(src);
index 2624a71..97f24d8 100644 (file)
--- a/pp_hot.c
+++ b/pp_hot.c
@@ -1917,7 +1917,6 @@ PP(pp_iter)
                 Perl_croak(aTHX_ "Use of freed value in iteration");
             }
             if (SvPADTMP(sv)) {
-                assert(!IS_PADGV(sv));
                 sv = newSVsv(sv);
             }
             else {
@@ -2435,7 +2434,6 @@ PP(pp_grepwhile)
 
        src = PL_stack_base[*PL_markstack_ptr];
        if (SvPADTMP(src)) {
-            assert(!IS_PADGV(src));
            src = PL_stack_base[*PL_markstack_ptr] = sv_mortalcopy(src);
            PL_tmps_floor++;
        }
@@ -2697,7 +2695,6 @@ try_autoload:
                if (*MARK)
                {
                    if (SvPADTMP(*MARK)) {
-                        assert(!IS_PADGV(*MARK));
                        *MARK = sv_mortalcopy(*MARK);
                     }
                    SvTEMP_off(*MARK);
@@ -2766,7 +2763,6 @@ try_autoload:
            while (items--) {
                mark++;
                if (*mark && SvPADTMP(*mark)) {
-                    assert(!IS_PADGV(*mark));
                    *mark = sv_mortalcopy(*mark);
                 }
            }
index f75ecd9..9213621 100644 (file)
--- a/pp_sort.c
+++ b/pp_sort.c
@@ -1604,7 +1604,6 @@ PP(pp_sort)
     for (i=max; i > 0 ; i--) {
        if ((*p1 = *p2++)) {                    /* Weed out nulls. */
            if (copytmps && SvPADTMP(*p1)) {
-                assert(!IS_PADGV(*p1));
                *p1 = sv_mortalcopy(*p1);
             }
            SvTEMP_off(*p1);
index 54ba2ce..9e5872c 100644 (file)
--- a/regexec.c
+++ b/regexec.c
@@ -2637,7 +2637,6 @@ Perl_regexec_flags(pTHX_ REGEXP * const rx, char *stringarg, char *strend,
            magic belonging to this SV.
            Not newSVsv, either, as it does not COW.
         */
-        assert(!IS_PADGV(sv));
         reginfo->sv = newSV(0);
         SvSetSV_nosteal(reginfo->sv, sv);
         SAVEFREESV(reginfo->sv);