diff options
author | Mike Pall <mike> | 2015-03-02 17:34:33 +0100 |
---|---|---|
committer | Mike Pall <mike> | 2015-03-02 17:34:33 +0100 |
commit | 2c0748f6914d901e402cf87fd53e998aaaef1d6f (patch) | |
tree | 812ccb5b529632a7d5bdb44a518dafa5e905706e /src/lj_opt_fold.c | |
parent | e1a8f3ba0b8cee42ca82655e891d16b46912d339 (diff) | |
parent | 1f578bd424b4499a1d63f4ef3c2647ca0836b877 (diff) | |
download | luajit-2c0748f6914d901e402cf87fd53e998aaaef1d6f.tar.gz luajit-2c0748f6914d901e402cf87fd53e998aaaef1d6f.tar.bz2 luajit-2c0748f6914d901e402cf87fd53e998aaaef1d6f.zip |
Merge branch 'master' into v2.1
Diffstat (limited to 'src/lj_opt_fold.c')
-rw-r--r-- | src/lj_opt_fold.c | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/src/lj_opt_fold.c b/src/lj_opt_fold.c index 7698b373..f809a991 100644 --- a/src/lj_opt_fold.c +++ b/src/lj_opt_fold.c | |||
@@ -1167,11 +1167,16 @@ LJFOLDF(simplify_conv_flt_num) | |||
1167 | LJFOLD(TOBIT CONV KNUM) | 1167 | LJFOLD(TOBIT CONV KNUM) |
1168 | LJFOLDF(simplify_tobit_conv) | 1168 | LJFOLDF(simplify_tobit_conv) |
1169 | { | 1169 | { |
1170 | if ((fleft->op2 & IRCONV_SRCMASK) == IRT_INT || | 1170 | /* Fold even across PHI to avoid expensive num->int conversions in loop. */ |
1171 | (fleft->op2 & IRCONV_SRCMASK) == IRT_U32) { | 1171 | if ((fleft->op2 & IRCONV_SRCMASK) == IRT_INT) { |
1172 | /* Fold even across PHI to avoid expensive num->int conversions in loop. */ | ||
1173 | lua_assert(irt_isnum(fleft->t)); | 1172 | lua_assert(irt_isnum(fleft->t)); |
1174 | return fleft->op1; | 1173 | return fleft->op1; |
1174 | } else if ((fleft->op2 & IRCONV_SRCMASK) == IRT_U32) { | ||
1175 | lua_assert(irt_isnum(fleft->t)); | ||
1176 | fins->o = IR_CONV; | ||
1177 | fins->op1 = fleft->op1; | ||
1178 | fins->op2 = (IRT_INT<<5)|IRT_U32; | ||
1179 | return RETRYFOLD; | ||
1175 | } | 1180 | } |
1176 | return NEXTFOLD; | 1181 | return NEXTFOLD; |
1177 | } | 1182 | } |