This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
for my $x (...): $x is always stale
authorDavid Mitchell <davem@iabyn.com>
Sun, 19 Jul 2015 09:51:38 +0000 (10:51 +0100)
committerDavid Mitchell <davem@iabyn.com>
Wed, 3 Feb 2016 08:59:38 +0000 (08:59 +0000)
commitfdb8b82b3844f042ed8d9599cea560393ea57ee8
tree286fac22754ca735b92ed2018191752a0401e507
parent8bf51796bc8d29d32731097f6315a5915028f806
for my $x (...): $x is always stale

Remove the code in pp_enteriter that turns $x's staleness off and schedules
on the save stack for it to be turned back on at scope exit.

Since 'for my $x' works by making $x's pad slot temporarily point to
each item in turn, the "real" $x which lives in the pad outside of loop
time can never be accessed by the usual closure tricks (BEGIN, eval,
nested named subs etc) during a loop, so doesn't need to be marked as not
stale.

Skipping this step is one less thing to be pushed onto the save stack
on each for loop entry.
pp_ctl.c