This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Eliminate cx->blk_loop.resetsp
authorDavid Mitchell <davem@iabyn.com>
Sat, 17 Oct 2015 11:56:15 +0000 (12:56 +0100)
committerDavid Mitchell <davem@iabyn.com>
Wed, 3 Feb 2016 09:18:30 +0000 (09:18 +0000)
commit1bef65a2c897ceb4139a39df14a8514b260493bd
tree84844d6a1097fd8fee39e093df06f2bc043955c8
parent8a1f10dd1e1964fa64cd0dff7196cf3f1f503ae1
Eliminate cx->blk_loop.resetsp

Of all the loop types, only CXt_LOOP_LIST, i.e. for (1,2,3) {},
needs to keep anything on the stack, i.e. for all the others,
cx->blk_loop.resetsp can always equal cx->blk_oldsp.
For CXt_LOOP_LIST, the same value as resetsp is stored as
blk_loop.state_u.stack.basesp.

So we can eliminate the resetsp field. This is good as the loop substruct
is the largest (ITHREADS) or joint largest with eval (non-threaded).

Also, we now don't have to store that value for non-CXt_LOOP_LIST loops.
The downside is we now have to choose between basesp and oldsp in
pp_leaveloop and pp_last, based on CX type.
cop.h
pp_ctl.c
scope.c