summaryrefslogtreecommitdiff
path: root/src/lj_record.c
diff options
context:
space:
mode:
authorMike Pall <mike>2010-03-09 03:47:49 +0100
committerMike Pall <mike>2010-03-09 03:47:49 +0100
commit6e6034e809a7c59a1cb95ee1d4eb54f09ae19015 (patch)
tree777fa639db25214cc45e29b8bf2b239827698c61 /src/lj_record.c
parentd87cb5b526ee480473d99a5e80a25bd9bef1e9a2 (diff)
downloadluajit-6e6034e809a7c59a1cb95ee1d4eb54f09ae19015.tar.gz
luajit-6e6034e809a7c59a1cb95ee1d4eb54f09ae19015.tar.bz2
luajit-6e6034e809a7c59a1cb95ee1d4eb54f09ae19015.zip
Avoid tracing the nil return case of tonumber().
Diffstat (limited to 'src/lj_record.c')
-rw-r--r--src/lj_record.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/src/lj_record.c b/src/lj_record.c
index d0cad539..d8cd8962 100644
--- a/src/lj_record.c
+++ b/src/lj_record.c
@@ -1237,8 +1237,12 @@ static void LJ_FASTCALL recff_tonumber(jit_State *J, RecordFFData *rd)
1237 if (!tref_isk(base) || IR(tref_ref(base))->i != 10) 1237 if (!tref_isk(base) || IR(tref_ref(base))->i != 10)
1238 recff_nyiu(J); 1238 recff_nyiu(J);
1239 } 1239 }
1240 if (tref_isstr(tr)) 1240 if (tref_isstr(tr)) {
1241 TValue tmp;
1242 if (!lj_str_tonum(strV(&rd->argv[0]), &tmp))
1243 recff_nyiu(J); /* Would need an inverted STRTO for this case. */
1241 tr = emitir(IRTG(IR_STRTO, IRT_NUM), tr, 0); 1244 tr = emitir(IRTG(IR_STRTO, IRT_NUM), tr, 0);
1245 }
1242 } else { 1246 } else {
1243 tr = TREF_NIL; 1247 tr = TREF_NIL;
1244 } 1248 }