This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Simplify ck_grep
authorFather Chrysostomos <sprout@cpan.org>
Sat, 14 Jul 2012 13:58:29 +0000 (06:58 -0700)
committerFather Chrysostomos <sprout@cpan.org>
Sun, 15 Jul 2012 00:35:31 +0000 (17:35 -0700)
commit152e8a12bd1ba6c9b17f3da2f81f37518f992ad2
tree0a25bab0009411335281a3367dd2f352109bb498
parentc650d6974333f05db3de6fe88357fb0e710220a3
Simplify ck_grep

Back in perl 5.000, ck_grep would call ck_sort (which was still the
case until 354dd559d99 just recently) and the latter would traverse
its way through the op_next pointers to find an op that tried to
escape the block, setting its op_next pointer to null.  Then ck_grep
would traverse op_next pointers itself to find the place where ck_sort
stopped.  That caused problems for grep which were fixed in 748a93069b
(perl 5.001).  It was fixed by setting op_next to 0 on the first op,
so that the loop in ck_grep would not do anything.  But that loop was
left there.  This commit removes it.

There are also a couple of things I missed when disentangling
ck_grep and ck_sort in commit /354dd559d9.  I accidentally put
if (o->op_flags & OPf_STACKED) inside if (o->op_flags & OPf_STACKED).
And the OPf_SPECIAL flag was only being set for sort’s use, so ck_grep
doesn’t need to copy that.
ext/B/t/f_map.t
ext/B/t/f_sort.t
ext/B/t/optree_samples.t
op.c