summaryrefslogtreecommitdiff
path: root/pp.h
diff options
context:
space:
mode:
authorTony Cook <tony@develop-help.com>2015-11-19 10:04:25 +1100
committerTony Cook <tony@develop-help.com>2015-11-24 14:02:04 +1100
commit2efdfb1e6cf6ff62b97356abd74ba479aee48bc1 (patch)
tree04c31a5cf10184aad362ffc85fc735a3ddc1cfc0 /pp.h
parent1a7cb6482feeead144ca91eb5258ac811e6aa01e (diff)
downloadperl-2efdfb1e6cf6ff62b97356abd74ba479aee48bc1.tar.gz
[perl #126635] don't shortcut when SVf_IVisUV is set
Most integers are small, so in most cases it won't be set. The other option would be to always clear it, but that increases the amount of inline code for a rare case.
Diffstat (limited to 'pp.h')
-rw-r--r--pp.h4
1 files changed, 2 insertions, 2 deletions
diff --git a/pp.h b/pp.h
index 687b0ca665..60fe9ee1f8 100644
--- a/pp.h
+++ b/pp.h
@@ -377,7 +377,7 @@ Does not use C<TARG>. See also C<L</XPUSHu>>, C<L</mPUSHu>> and C<L</PUSHu>>.
STMT_START { \
IV TARGi_iv = i; \
if (LIKELY( \
- ((SvFLAGS(TARG) & (SVTYPEMASK|SVf_THINKFIRST)) == SVt_IV) \
+ ((SvFLAGS(TARG) & (SVTYPEMASK|SVf_THINKFIRST|SVf_IVisUV)) == SVt_IV) \
& (do_taint ? !TAINT_get : 1))) \
{ \
/* Cheap SvIOK_only(). \
@@ -399,7 +399,7 @@ Does not use C<TARG>. See also C<L</XPUSHu>>, C<L</mPUSHu>> and C<L</PUSHu>>.
STMT_START { \
UV TARGu_uv = u; \
if (LIKELY( \
- ((SvFLAGS(TARG) & (SVTYPEMASK|SVf_THINKFIRST)) == SVt_IV) \
+ ((SvFLAGS(TARG) & (SVTYPEMASK|SVf_THINKFIRST|SVf_IVisUV)) == SVt_IV) \
& (do_taint ? !TAINT_get : 1) \
& (TARGu_uv <= (UV)IV_MAX))) \
{ \