More efficient to call newSV_type() then SvGROW() instead of newSV()
Nicholas Clark [Sun, 18 Feb 2007 20:07:39 +0000 (20:07 +0000)]
with a size then sv_upgrade(), as the latter calls sv_upgrade() twice.

p4raw-id: //depot/perl@30348

perl.c
toke.c

diff --git a/perl.c b/perl.c
index 4dfea50..c7ed592 100644 (file)
--- a/perl.c
+++ b/perl.c
@@ -262,8 +262,8 @@ perl_construct(pTHXx)
     if (!PL_linestr) {
        PL_curcop = &PL_compiling;      /* needed by ckWARN, right away */
 
-       PL_linestr = newSV(79);
-       sv_upgrade(PL_linestr,SVt_PVIV);
+       PL_linestr = newSV_type(SVt_PVIV);
+       SvGROW(PL_linestr, 80);
 
        if (!SvREADONLY(&PL_sv_undef)) {
            /* set read-only and try to insure than we wont see REFCNT==0
diff --git a/toke.c b/toke.c
index 7719aa5..5248d46 100644 (file)
--- a/toke.c
+++ b/toke.c
@@ -11149,8 +11149,8 @@ S_scan_heredoc(pTHX_ register char *s)
        s--;
 #endif
 
-    tmpstr = newSV(79);
-    sv_upgrade(tmpstr, SVt_PVIV);
+    tmpstr = newSV_type(SVt_PVIV);
+    SvGROW(tmpstr, 80);
     if (term == '\'') {
        op_type = OP_CONST;
        SvIV_set(tmpstr, -1);
@@ -11555,8 +11555,8 @@ S_scan_str(pTHX_ char *start, int keep_quoted, int keep_delims)
 
     /* create a new SV to hold the contents.  79 is the SV's initial length.
        What a random number. */
-    sv = newSV(79);
-    sv_upgrade(sv, SVt_PVIV);
+    sv = newSV_type(SVt_PVIV);
+    SvGROW(sv, 80);
     SvIV_set(sv, termcode);
     (void)SvPOK_only(sv);              /* validate pointer */