diff options
author | David Mitchell <davem@iabyn.com> | 2016-08-17 09:59:06 +0100 |
---|---|---|
committer | David Mitchell <davem@iabyn.com> | 2016-08-17 13:38:56 +0100 |
commit | 93a3e97518c1f1e5d6916e1550a36f0d39d520e6 (patch) | |
tree | 278d63c94a5514c3140f9dd796552240d1206204 /av.c | |
parent | 1d7e6444bd515142acf34ef230b50f9d80ab9017 (diff) | |
download | perl-93a3e97518c1f1e5d6916e1550a36f0d39d520e6.tar.gz |
av_fetch(): optimise the negative index branch.
For a negative index one conditional is redundant, since after determining
that key < 0 and recomputing key as (AvFILLp(av) - key), key can't
be > AvFILLp(av).
Diffstat (limited to 'av.c')
-rw-r--r-- | av.c | 6 |
1 files changed, 4 insertions, 2 deletions
@@ -272,9 +272,11 @@ Perl_av_fetch(pTHX_ AV *av, SSize_t key, I32 lval) key += AvFILLp(av) + 1; if (key < 0) return NULL; + assert(key <= AvFILLp(av)); + if (!AvARRAY(av)[key]) + goto emptyness; } - - if (key > AvFILLp(av) || !AvARRAY(av)[key]) { + else if (key > AvFILLp(av) || !AvARRAY(av)[key]) { emptyness: return lval ? av_store(av,key,newSV(0)) : NULL; } |