From 93a3e97518c1f1e5d6916e1550a36f0d39d520e6 Mon Sep 17 00:00:00 2001 From: David Mitchell Date: Wed, 17 Aug 2016 09:59:06 +0100 Subject: [PATCH] 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). --- av.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/av.c b/av.c index a48702b..8967da5 100644 --- a/av.c +++ b/av.c @@ -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; } -- 1.8.3.1