diff options
author | Mike Pall <mike> | 2010-03-09 03:47:49 +0100 |
---|---|---|
committer | Mike Pall <mike> | 2010-03-09 03:47:49 +0100 |
commit | 6e6034e809a7c59a1cb95ee1d4eb54f09ae19015 (patch) | |
tree | 777fa639db25214cc45e29b8bf2b239827698c61 /src/lj_record.c | |
parent | d87cb5b526ee480473d99a5e80a25bd9bef1e9a2 (diff) | |
download | luajit-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.c | 6 |
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 | } |