op.c: Don’t reallocate a temp for lvalue funcs
authorFather Chrysostomos <sprout@cpan.org>
Fri, 14 Jun 2013 07:19:30 +0000 (00:19 -0700)
committerFather Chrysostomos <sprout@cpan.org>
Sat, 15 Jun 2013 01:10:33 +0000 (18:10 -0700)
commit169504d53dbeb12d5171b2b44e7db3c2b81af314
treed2d6aadc32462e32b7ad0592ca31d88660f3938a
parent653e8c97898a44bf717b370c46ff687ad74a4aee
op.c: Don’t reallocate a temp for lvalue funcs

There is no reason why keys, substr, pos and vec that can occur in
lvalue context need to reliquish ownership of the scalar in the
scratchpad used to return the value in rvalue context (the TARG) and
then have a new one allocated.

Also, the new TARG was marked PADMY, so, if the lvalue op got freed
(e.g., if it was inside if(0){...}), then its pad slot would remain
unusable by code subsequently compiled in the same sub, since pad_free
only turns off the PADTMP flag, not the PADMY flag, and it would hence
appear to pad_alloc to be still in use.  So it would waste a small
amount of memory in rare cases.  (Based on reading code, not on a
gdb session.)
op.c