diff options
author | Nicholas Clark <nick@ccl4.org> | 2006-04-08 14:46:53 +0000 |
---|---|---|
committer | Nicholas Clark <nick@ccl4.org> | 2006-04-08 14:46:53 +0000 |
commit | b03d03b0d431a697778042366f63e689b71fbf23 (patch) | |
tree | 79f4643fd93a315a27af9e287a904736f8361c58 | |
parent | 5bfb7d0e2e2f3251d6322e902aed9479d39e920a (diff) | |
download | perl-b03d03b0d431a697778042366f63e689b71fbf23.tar.gz |
By swapping the order of pushes onto the save stack for
SAVEt_GENERIC_PVREF, we can merge it with SAVEt_PPTR in Perl_ss_dup().
p4raw-id: //depot/perl@27740
-rw-r--r-- | scope.c | 4 | ||||
-rw-r--r-- | sv.c | 7 |
2 files changed, 3 insertions, 8 deletions
@@ -226,8 +226,8 @@ Perl_save_generic_pvref(pTHX_ char **str) { dVAR; SSCHECK(3); - SSPUSHPTR(str); SSPUSHPTR(*str); + SSPUSHPTR(str); SSPUSHINT(SAVEt_GENERIC_PVREF); } @@ -643,8 +643,8 @@ Perl_leave_scope(pTHX_ I32 base) SvREFCNT_dec(av); break; case SAVEt_GENERIC_PVREF: /* generic pv */ - str = (char*)SSPOPPTR; ptr = SSPOPPTR; + str = (char*)SSPOPPTR; if (*(char**)ptr != str) { Safefree(*(char**)ptr); *(char**)ptr = str; @@ -10382,12 +10382,6 @@ Perl_ss_dup(pTHX_ PerlInterpreter *proto_perl, CLONE_PARAMS* param) gv = (GV*)POPPTR(ss,ix); TOPPTR(nss,ix) = gv_dup_inc(gv, param); break; - case SAVEt_GENERIC_PVREF: /* generic char* */ - c = (char*)POPPTR(ss,ix); - TOPPTR(nss,ix) = pv_dup(c); - ptr = POPPTR(ss,ix); - TOPPTR(nss,ix) = any_dup(ptr, proto_perl); - break; case SAVEt_SHARED_PVREF: /* char* in shared space */ c = (char*)POPPTR(ss,ix); TOPPTR(nss,ix) = savesharedpv(c); @@ -10452,6 +10446,7 @@ Perl_ss_dup(pTHX_ PerlInterpreter *proto_perl, CLONE_PARAMS* param) ptr = POPPTR(ss,ix); TOPPTR(nss,ix) = any_dup(ptr, proto_perl); break; + case SAVEt_GENERIC_PVREF: /* generic char* */ case SAVEt_PPTR: /* char* reference */ ptr = POPPTR(ss,ix); TOPPTR(nss,ix) = any_dup(ptr, proto_perl); |