From: Nicholas Clark Date: Sun, 30 May 2010 11:52:01 +0000 (+0100) Subject: Eliminate some newSV(0)s by merging the SV allocation with first modification. X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=b081dd7eaaec2b6ee43335645ab40cff0ca3f91a;p=p5sagit%2Fp5-mst-13.2.git Eliminate some newSV(0)s by merging the SV allocation with first modification. --- diff --git a/op.c b/op.c index da0ad2c..f667164 100644 --- a/op.c +++ b/op.c @@ -5920,15 +5920,14 @@ Perl_newATTRSUB(pTHX_ I32 floor, OP *o, OP *proto, OP *attrs, OP *block) if (has_name) { if (PERLDB_SUBLINE && PL_curstash != PL_debstash) { - SV * const sv = newSV(0); SV * const tmpstr = sv_newmortal(); GV * const db_postponed = gv_fetchpvs("DB::postponed", GV_ADDMULTI, SVt_PVHV); HV *hv; - - Perl_sv_setpvf(aTHX_ sv, "%s:%ld-%ld", - CopFILE(PL_curcop), - (long)PL_subline, (long)CopLINE(PL_curcop)); + SV * const sv = Perl_newSVpvf(aTHX_ "%s:%ld-%ld", + CopFILE(PL_curcop), + (long)PL_subline, + (long)CopLINE(PL_curcop)); gv_efullname3(tmpstr, gv, NULL); (void)hv_store(GvHV(PL_DBsub), SvPVX_const(tmpstr), SvCUR(tmpstr), sv, 0); diff --git a/toke.c b/toke.c index a5d5429..8a4af48 100644 --- a/toke.c +++ b/toke.c @@ -13083,13 +13083,12 @@ Perl_scan_num(pTHX_ const char *start, YYSTYPE* lvalp) Perl_ck_warner(aTHX_ packWARN(WARN_SYNTAX), "Misplaced _ in number"); } - sv = newSV(0); if (overflowed) { if (n > 4294967295.0) Perl_ck_warner(aTHX_ packWARN(WARN_PORTABLE), "%s number > %s non-portable", Base, max); - sv_setnv(sv, n); + sv = newSVnv(n); } else { #if UVSIZE > 4 @@ -13098,7 +13097,7 @@ Perl_scan_num(pTHX_ const char *start, YYSTYPE* lvalp) "%s number > %s non-portable", Base, max); #endif - sv_setuv(sv, u); + sv = newSVuv(u); } if (just_zero && (PL_hints & HINT_NEW_INTEGER)) sv = new_constant(start, s - start, "integer", @@ -13229,9 +13228,6 @@ Perl_scan_num(pTHX_ const char *start, YYSTYPE* lvalp) } - /* make an sv from the string */ - sv = newSV(0); - /* We try to do an integer conversion first if no characters indicating "float" have been found. @@ -13243,12 +13239,12 @@ Perl_scan_num(pTHX_ const char *start, YYSTYPE* lvalp) if (flags == IS_NUMBER_IN_UV) { if (uv <= IV_MAX) - sv_setiv(sv, uv); /* Prefer IVs over UVs. */ + sv = newSViv(uv); /* Prefer IVs over UVs. */ else - sv_setuv(sv, uv); + sv = newSVuv(uv); } else if (flags == (IS_NUMBER_IN_UV | IS_NUMBER_NEG)) { if (uv <= (UV) IV_MIN) - sv_setiv(sv, -(IV)uv); + sv = newSViv(-(IV)uv); else floatit = TRUE; } else @@ -13258,7 +13254,7 @@ Perl_scan_num(pTHX_ const char *start, YYSTYPE* lvalp) /* terminate the string */ *d = '\0'; nv = Atof(PL_tokenbuf); - sv_setnv(sv, nv); + sv = newSVnv(nv); } if ( floatit