reduce scope of a var in save_clearsv
authorDaniel Dragan <bulk88@hotmail.com>
Mon, 19 Nov 2012 02:16:39 +0000 (21:16 -0500)
committerFather Chrysostomos <sprout@cpan.org>
Mon, 19 Nov 2012 04:17:19 +0000 (20:17 -0800)
commit623e28c6c86d5d4c8c412d8ccf1d046acfc77d49
treed79c463011620008a1843a8e9de70bb883707ebf
parentb1b0854bd0007475cf5a2630594138a1fff131e2
reduce scope of a var in save_clearsv

svp is a pointer to a pad array slice. It is derefed to set a sv flag.
It's optimized scope previous extended past the savestack_grow call. By
moving the flag setting before any calls in save_clearsv, svp does not have
to be carried across any calls. On some platforms there will be a benefit
(args transfered in vol regs for example, AMD64 Win64), on others none
since it will be reread from the stack after any child call anyway. I
assume the SvPADSTALE_off flag will have no effect on the panic croak.
After this commit, the only auto var carried through a call is
offset_shifted (and unavoidably my_perl).

I saw a drop in the size of save_clearsv from 0x5A to 0x58. The saving
and use of 1 nonvol reg on x86 32 bit VC 2003 was reduced, total stack
frame reduced by 1 pointer, since VC 2003 read svp off the stack only
once at the start of save_clearsv and kept it in a nonvol reg for the rest
of this func's body.
scope.c