diff options
author | Gurusamy Sarathy <gsar@cpan.org> | 2000-01-14 04:40:49 +0000 |
---|---|---|
committer | Gurusamy Sarathy <gsar@cpan.org> | 2000-01-14 04:40:49 +0000 |
commit | 5faabd7d610b4ff8e7c072611a59259096c14bad (patch) | |
tree | b1cafc257bdb058f33deb1c6cf4c4201dbaf7053 /op.c | |
parent | 86a9aef26fb49fa244fdb909e2ecabafc79006a1 (diff) | |
download | perl-5faabd7d610b4ff8e7c072611a59259096c14bad.tar.gz |
minor optimization (avoid double sv_upgrade() for "our Foo $bar;")
p4raw-id: //depot/perl@4803
Diffstat (limited to 'op.c')
-rw-r--r-- | op.c | 10 |
1 files changed, 5 insertions, 5 deletions
@@ -257,17 +257,17 @@ S_pad_findlex(pTHX_ char *name, PADOFFSET newoff, U32 seq, CV* startcv, SvNVX(namesv) = (NV)PL_curcop->cop_seq; SvIVX(namesv) = PAD_MAX; /* A ref, intro immediately */ SvFAKE_on(namesv); /* A ref, not a real var */ + if (SvFLAGS(sv) & SVpad_OUR) { /* An "our" variable */ + SvFLAGS(namesv) |= SVpad_OUR; + (void)SvUPGRADE(namesv, SVt_PVGV); + GvSTASH(namesv) = (HV*)SvREFCNT_inc((SV*)GvSTASH(sv)); + } if (SvOBJECT(sv)) { /* A typed var */ SvOBJECT_on(namesv); (void)SvUPGRADE(namesv, SVt_PVMG); SvSTASH(namesv) = (HV*)SvREFCNT_inc((SV*)SvSTASH(sv)); PL_sv_objcount++; } - if (SvFLAGS(sv) & SVpad_OUR) { /* An "our" variable */ - SvFLAGS(namesv) |= SVpad_OUR; - (void)SvUPGRADE(namesv, SVt_PVGV); - GvSTASH(namesv) = (HV*)SvREFCNT_inc((SV*)GvSTASH(sv)); - } if (CvANON(PL_compcv) || SvTYPE(PL_compcv) == SVt_PVFM) { /* "It's closures all the way down." */ CvCLONE_on(PL_compcv); |