In perl.git, the branch blead has been updated <http://perl5.git.perl.org/perl.git/commitdiff/fc2b2dcaa051537d8d92ccf366f291581b26024b?hp=31c7f561ae1fcf5096c82b0ce7d0ab0dc6899204>
- Log ----------------------------------------------------------------- commit fc2b2dcaa051537d8d92ccf366f291581b26024b Author: Steffen Mueller <[email protected]> Date: Sun Dec 9 17:26:13 2012 +0100 Convert some SvREFCNT_dec's to SvREFCNT_dec_NN's for efficiency ----------------------------------------------------------------------- Summary of changes: op.c | 12 ++++++------ pad.c | 10 +++++----- pp_hot.c | 16 ++++++++-------- sv.c | 36 ++++++++++++++++++------------------ 4 files changed, 37 insertions(+), 37 deletions(-) diff --git a/op.c b/op.c index 766ca19..6240225 100644 --- a/op.c +++ b/op.c @@ -800,7 +800,7 @@ Perl_op_clear(pTHX_ OP *o) #endif if (still_valid) { int try_downgrade = SvREFCNT(gv) == 2; - SvREFCNT_dec(gv); + SvREFCNT_dec_NN(gv); if (try_downgrade) gv_try_downgrade(gv); } @@ -1387,7 +1387,7 @@ Perl_scalarvoid(pTHX_ OP *o) PERL_PV_PRETTY_DUMP | PERL_PV_ESCAPE_NOCLEAR | PERL_PV_ESCAPE_UNI_DETECT)); - SvREFCNT_dec(dsv); + SvREFCNT_dec_NN(dsv); } } else if (SvOK(sv)) { @@ -1803,7 +1803,7 @@ S_finalize_op(pTHX_ OP* o) lexname = newSVpvn_share(key, SvUTF8(sv) ? -(I32)keylen : (I32)keylen, 0); - SvREFCNT_dec(sv); + SvREFCNT_dec_NN(sv); *svp = lexname; } @@ -7286,7 +7286,7 @@ Perl_newMYSUB(pTHX_ I32 floor, OP *o, OP *proto, OP *attrs, OP *block) &PadARRAY(PadlistARRAY(CvPADLIST(outcv))[CvDEPTH(outcv)])[pax]; if (reusable) cv_clone_into(clonee, *spot); else *spot = cv_clone(clonee); - SvREFCNT_dec(clonee); + SvREFCNT_dec_NN(clonee); cv = *spot; SvPADMY_on(cv); } @@ -7855,7 +7855,7 @@ Perl_newXS_len_flags(pTHX_ const char *name, STRLEN len, ), cv, const_svp); } - SvREFCNT_dec(cv); + SvREFCNT_dec_NN(cv); cv = NULL; } } @@ -9011,7 +9011,7 @@ Perl_ck_glob(pTHX_ OP *o) sv_setiv(GvSVn(gv),PL_glob_index++); #endif op_append_elem(OP_GLOB, o, newGVOP(OP_GV, 0, gv)); - SvREFCNT_dec(gv); /* newGVOP increased it */ + SvREFCNT_dec_NN(gv); /* newGVOP increased it */ scalarkids(o); return o; } diff --git a/pad.c b/pad.c index dee5c1c..549d3f5 100644 --- a/pad.c +++ b/pad.c @@ -196,7 +196,7 @@ sv_eq_pvn_flags(pTHX_ const SV *sv, const char* pv, const STRLEN pvlen, const U3 sv_recode_to_utf8(svrecode, PL_encoding); pv1 = SvPV_const(svrecode, cur1); } - SvREFCNT_dec(svrecode); + SvREFCNT_dec_NN(svrecode); } if (flags & SVf_UTF8) return (bytes_cmp_utf8( @@ -427,7 +427,7 @@ Perl_cv_undef(pTHX_ CV *cv) if (SvREFCNT(comppad) < 2) { /* allow for /(?{ sub{} })/ */ curpad[ix] = NULL; - SvREFCNT_dec(innercv); + SvREFCNT_dec_NN(innercv); inner_rc--; } @@ -457,7 +457,7 @@ Perl_cv_undef(pTHX_ CV *cv) PL_comppad = NULL; PL_curpad = NULL; } - SvREFCNT_dec(sv); + SvREFCNT_dec_NN(sv); } } { @@ -830,7 +830,7 @@ Perl_pad_add_anon(pTHX_ CV* func, I32 optype) if (CvOUTSIDE(func) && SvTYPE(func) == SVt_PVCV) { assert(!CvWEAKOUTSIDE(func)); CvWEAKOUTSIDE_on(func); - SvREFCNT_dec(CvOUTSIDE(func)); + SvREFCNT_dec_NN(CvOUTSIDE(func)); } return ix; } @@ -2164,7 +2164,7 @@ S_cv_clone(pTHX_ CV *proto, CV *cv, CV *outside) */ SV* const const_sv = op_const_sv(CvSTART(cv), cv); if (const_sv) { - SvREFCNT_dec(cv); + SvREFCNT_dec_NN(cv); /* For this calling case, op_const_sv returns a *copy*, which we donate to newCONSTSUB. Yes, this is ugly, and should be killed. Need to fix how lib/constant.pm works to eliminate this. */ diff --git a/pp_hot.c b/pp_hot.c index 599b759..5998110 100644 --- a/pp_hot.c +++ b/pp_hot.c @@ -184,7 +184,7 @@ PP(pp_sassign) */ SvRV_set(right, MUTABLE_SV(newCONSTSUB(GvSTASH(left), NULL, SvRV(cv)))); - SvREFCNT_dec(cv); + SvREFCNT_dec_NN(cv); LEAVE_with_name("sassign_coderef"); } else { /* What can happen for the corner case *{"BONK"} = \&{"BONK"}; @@ -207,7 +207,7 @@ PP(pp_sassign) assert(CvFLAGS(source) & CVf_CONST); SvREFCNT_inc_void(source); - SvREFCNT_dec(upgraded); + SvREFCNT_dec_NN(upgraded); SvRV_set(right, MUTABLE_SV(source)); } } @@ -1291,12 +1291,12 @@ PP(pp_qr) cvp = &( ReANY((REGEXP *)SvRV(rv))->qr_anoncv); if ((cv = *cvp) && CvCLONE(*cvp)) { *cvp = cv_clone(cv); - SvREFCNT_dec(cv); + SvREFCNT_dec_NN(cv); } if (pkg) { HV *const stash = gv_stashsv(pkg, GV_ADD); - SvREFCNT_dec(pkg); + SvREFCNT_dec_NN(pkg); (void)sv_bless(rv, stash); } @@ -1890,7 +1890,7 @@ PP(pp_helem) sv_upgrade(lv, SVt_PVLV); LvTYPE(lv) = 'y'; sv_magic(lv, key2 = newSVsv(keysv), PERL_MAGIC_defelem, NULL, 0); - SvREFCNT_dec(key2); /* sv_magic() increments refcount */ + SvREFCNT_dec_NN(key2); /* sv_magic() increments refcount */ LvTARG(lv) = SvREFCNT_inc_simple(hv); LvTARGLEN(lv) = 1; PUSHs(lv); @@ -1964,7 +1964,7 @@ PP(pp_iter) * completely new SV for closures/references to work as * they used to */ *itersvp = newSVsv(cur); - SvREFCNT_dec(oldsv); + SvREFCNT_dec_NN(oldsv); } if (strEQ(SvPVX_const(cur), max)) sv_setiv(cur, 0); /* terminate next time */ @@ -1991,7 +1991,7 @@ PP(pp_iter) * completely new SV for closures/references to work as they * used to */ *itersvp = newSViv(cur); - SvREFCNT_dec(oldsv); + SvREFCNT_dec_NN(oldsv); } if (cur == IV_MAX) { @@ -2614,7 +2614,7 @@ PP(pp_leavesub) sv = SvREFCNT_inc(TOPs); /* FREETMPS could clobber it */ FREETMPS; *MARK = sv_mortalcopy(sv); - SvREFCNT_dec(sv); + SvREFCNT_dec_NN(sv); } } else if (SvTEMP(TOPs) && SvREFCNT(TOPs) == 1 diff --git a/sv.c b/sv.c index 37cd39a..16585ea 100644 --- a/sv.c +++ b/sv.c @@ -477,7 +477,7 @@ do_clean_objs(pTHX_ SV *const ref) } else { SvROK_off(ref); SvRV_set(ref, NULL); - SvREFCNT_dec(target); + SvREFCNT_dec_NN(target); } } } @@ -505,27 +505,27 @@ do_clean_named_objs(pTHX_ SV *const sv) DEBUG_D((PerlIO_printf(Perl_debug_log, "Cleaning named glob SV object:\n "), sv_dump(obj))); GvSV(sv) = NULL; - SvREFCNT_dec(obj); + SvREFCNT_dec_NN(obj); } if ( ((obj = MUTABLE_SV(GvAV(sv)) )) && SvOBJECT(obj)) { DEBUG_D((PerlIO_printf(Perl_debug_log, "Cleaning named glob AV object:\n "), sv_dump(obj))); GvAV(sv) = NULL; - SvREFCNT_dec(obj); + SvREFCNT_dec_NN(obj); } if ( ((obj = MUTABLE_SV(GvHV(sv)) )) && SvOBJECT(obj)) { DEBUG_D((PerlIO_printf(Perl_debug_log, "Cleaning named glob HV object:\n "), sv_dump(obj))); GvHV(sv) = NULL; - SvREFCNT_dec(obj); + SvREFCNT_dec_NN(obj); } if ( ((obj = MUTABLE_SV(GvCV(sv)) )) && SvOBJECT(obj)) { DEBUG_D((PerlIO_printf(Perl_debug_log, "Cleaning named glob CV object:\n "), sv_dump(obj))); GvCV_set(sv, NULL); - SvREFCNT_dec(obj); + SvREFCNT_dec_NN(obj); } - SvREFCNT_dec(sv); /* undo the inc above */ + SvREFCNT_dec_NN(sv); /* undo the inc above */ } /* clear any IO slots in a GV which hold objects (except stderr, defout); @@ -546,9 +546,9 @@ do_clean_named_io_objs(pTHX_ SV *const sv) DEBUG_D((PerlIO_printf(Perl_debug_log, "Cleaning named glob IO object:\n "), sv_dump(obj))); GvIOp(sv) = NULL; - SvREFCNT_dec(obj); + SvREFCNT_dec_NN(obj); } - SvREFCNT_dec(sv); /* undo the inc above */ + SvREFCNT_dec_NN(sv); /* undo the inc above */ } /* Void wrapper to pass to visit() */ @@ -607,7 +607,7 @@ do_clean_all(pTHX_ SV *const sv) } DEBUG_D((PerlIO_printf(Perl_debug_log, "Cleaning loops: SV at 0x%"UVxf"\n", PTR2UV(sv)) )); SvFLAGS(sv) |= SVf_BREAK; - SvREFCNT_dec(sv); + SvREFCNT_dec_NN(sv); } /* @@ -4948,7 +4948,7 @@ Perl_sv_force_normal_flags(pTHX_ SV *const sv, const U32 flags) SvANY(temp) = temp_p; temp->sv_u.svu_rx = (regexp *)temp_p; - SvREFCNT_dec(temp); + SvREFCNT_dec_NN(temp); } else if (SvVOK(sv)) sv_unmagic(sv, PERL_MAGIC_vstring); } @@ -5539,7 +5539,7 @@ Perl_sv_rvweaken(pTHX_ SV *const sv) tsv = SvRV(sv); Perl_sv_add_backref(aTHX_ tsv, sv); SvWEAKREF_on(sv); - SvREFCNT_dec(tsv); + SvREFCNT_dec_NN(tsv); return sv; } @@ -5835,7 +5835,7 @@ Perl_sv_kill_backrefs(pTHX_ SV *const sv, AV *const av) } if (is_array) { AvFILLp(av) = -1; - SvREFCNT_dec(av); /* remove extra count added by sv_add_backref() */ + SvREFCNT_dec_NN(av); /* remove extra count added by sv_add_backref() */ } return; } @@ -6052,7 +6052,7 @@ S_anonymise_cv_maybe(pTHX_ GV *gv, CV* cv) : newSVpvn_flags( "__ANON__", 8, 0 ); sv_catpvs(gvname, "::__ANON__"); anongv = gv_fetchsv(gvname, GV_ADDMULTI, SVt_PVCV); - SvREFCNT_dec(gvname); + SvREFCNT_dec_NN(gvname); CvANON_on(cv); CvCVGV_RC_on(cv); @@ -6488,7 +6488,7 @@ S_curse(pTHX_ SV * const sv, const bool check_refcnt) { SvRV_set(tmpref, NULL); SvROK_off(tmpref); } - SvREFCNT_dec(tmpref); + SvREFCNT_dec_NN(tmpref); } } } while (SvOBJECT(sv) && SvSTASH(sv) != stash); @@ -7379,7 +7379,7 @@ Perl_sv_eq_flags(pTHX_ SV *sv1, SV *sv2, const U32 flags) } /* Now both are in UTF-8. */ if (cur1 != cur2) { - SvREFCNT_dec(svrecode); + SvREFCNT_dec_NN(svrecode); return FALSE; } } @@ -9804,7 +9804,7 @@ Perl_sv_unref_flags(pTHX_ SV *const ref, const U32 flags) /* You can't have a || SvREADONLY(target) here, as $a = $$a, where $a was assigned to as BEGIN {$a = \"Foo"} will fail. */ if (SvREFCNT(target) != 1 || (flags & SV_IMMEDIATE_UNREF)) - SvREFCNT_dec(target); + SvREFCNT_dec_NN(target); else /* XXX Hack, but hard to make $a=$a->[1] work otherwise */ sv_2mortal(target); /* Schedule for freeing later */ } @@ -13848,7 +13848,7 @@ S_unreferenced_to_tmp_stack(pTHX_ AV *const unreferenced) } while (++svp <= last); AvREAL_off(unreferenced); } - SvREFCNT_dec(unreferenced); + SvREFCNT_dec_NN(unreferenced); } void @@ -14197,7 +14197,7 @@ Perl_varname(pTHX_ const GV *const gv, const char gvtype, PADOFFSET targ, Perl_sv_catpvf(aTHX_ name, "{%s}", pv_pretty(sv, SvPVX_const(keyname), SvCUR(keyname), 32, NULL, NULL, PERL_PV_PRETTY_DUMP | PERL_PV_ESCAPE_UNI_DETECT )); - SvREFCNT_dec(sv); + SvREFCNT_dec_NN(sv); } else if (subscript_type == FUV_SUBSCRIPT_ARRAY) { *SvPVX(name) = '$'; -- Perl5 Master Repository
