X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=pp_hot.c;h=f7183a8f126e8704afc9c00b432dbd81f45d3e59;hb=2d259d9294e79c03b1a69d3eaac3d6e5647468d7;hp=b52563a38f30b0c6d54d66c496e47d770391c84e;hpb=ee027f1d663256f1223632e02ff1c8835809ce91;p=p5sagit%2Fp5-mst-13.2.git diff --git a/pp_hot.c b/pp_hot.c index b52563a..f7183a8 100644 --- a/pp_hot.c +++ b/pp_hot.c @@ -1459,7 +1459,14 @@ PP(pp_iter) /* integer increment */ if (cx->blk_loop.iterix > cx->blk_loop.itermax) RETPUSHNO; - sv_setiv(*cx->blk_loop.itervar, cx->blk_loop.iterix++); + + /* we know that the loop index SV is IV capable, so we can save + * some time by doing the essential work of sv_setiv() ourself. + */ + sv = *cx->blk_loop.itervar; + (void)SvIOK_only(sv); + SvIVX(sv) = cx->blk_loop.iterix++; + RETPUSHYES; }