This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
pp_entersub(): eliminate a label
authorDavid Mitchell <davem@iabyn.com>
Sat, 11 Jul 2015 14:30:38 +0000 (15:30 +0100)
committerDavid Mitchell <davem@iabyn.com>
Wed, 3 Feb 2016 08:59:36 +0000 (08:59 +0000)
commit654c6d71951775491ab7e16e09fc394e1d32cd24
treed3e5909318d33b7da92442cf943051448622419e
parent1dfbe6b4adf94405803bd5ecb5c549061eaede69
pp_entersub(): eliminate a label

replace:

  retry:
    if (A) die;
    if (B) {
        ...;
        goto retry;
    }

with

    while (B) {
        ...;
    }

    if (A) die;

it's functionally equivalent except that the A test is now only
tried after we have been successful at B. This is ok, because
A is testing for an uncloned closure prototype, while B is looking
for a CV stub which needs autoloading,and it doesn't rally matter
which we test for first.
pp_hot.c