diff options
Diffstat (limited to 'src/lj_ir.c')
-rw-r--r-- | src/lj_ir.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/src/lj_ir.c b/src/lj_ir.c index b2170a10..0689bc22 100644 --- a/src/lj_ir.c +++ b/src/lj_ir.c | |||
@@ -15,6 +15,7 @@ | |||
15 | #if LJ_HASJIT | 15 | #if LJ_HASJIT |
16 | 16 | ||
17 | #include "lj_gc.h" | 17 | #include "lj_gc.h" |
18 | #include "lj_buf.h" | ||
18 | #include "lj_str.h" | 19 | #include "lj_str.h" |
19 | #include "lj_tab.h" | 20 | #include "lj_tab.h" |
20 | #include "lj_ir.h" | 21 | #include "lj_ir.h" |
@@ -29,6 +30,7 @@ | |||
29 | #endif | 30 | #endif |
30 | #include "lj_vm.h" | 31 | #include "lj_vm.h" |
31 | #include "lj_strscan.h" | 32 | #include "lj_strscan.h" |
33 | #include "lj_strfmt.h" | ||
32 | #include "lj_lib.h" | 34 | #include "lj_lib.h" |
33 | 35 | ||
34 | /* Some local macros to save typing. Undef'd at the end. */ | 36 | /* Some local macros to save typing. Undef'd at the end. */ |
@@ -251,7 +253,7 @@ TRef lj_ir_k64(jit_State *J, IROp op, cTValue *tv) | |||
251 | goto found; | 253 | goto found; |
252 | ref = ir_nextk(J); | 254 | ref = ir_nextk(J); |
253 | ir = IR(ref); | 255 | ir = IR(ref); |
254 | lua_assert(checkptr32(tv)); | 256 | lua_assert(checkptrGC(tv)); |
255 | setmref(ir->ptr, tv); | 257 | setmref(ir->ptr, tv); |
256 | ir->t.irt = t; | 258 | ir->t.irt = t; |
257 | ir->o = op; | 259 | ir->o = op; |
@@ -390,7 +392,7 @@ void lj_ir_kvalue(lua_State *L, TValue *tv, const IRIns *ir) | |||
390 | UNUSED(L); | 392 | UNUSED(L); |
391 | lua_assert(ir->o != IR_KSLOT); /* Common mistake. */ | 393 | lua_assert(ir->o != IR_KSLOT); /* Common mistake. */ |
392 | switch (ir->o) { | 394 | switch (ir->o) { |
393 | case IR_KPRI: setitype(tv, irt_toitype(ir->t)); break; | 395 | case IR_KPRI: setpriV(tv, irt_toitype(ir->t)); break; |
394 | case IR_KINT: setintV(tv, ir->i); break; | 396 | case IR_KINT: setintV(tv, ir->i); break; |
395 | case IR_KGC: setgcV(L, tv, ir_kgc(ir), irt_toitype(ir->t)); break; | 397 | case IR_KGC: setgcV(L, tv, ir_kgc(ir), irt_toitype(ir->t)); break; |
396 | case IR_KPTR: case IR_KKPTR: case IR_KNULL: | 398 | case IR_KPTR: case IR_KKPTR: case IR_KNULL: |
@@ -443,7 +445,8 @@ TRef LJ_FASTCALL lj_ir_tostr(jit_State *J, TRef tr) | |||
443 | if (!tref_isstr(tr)) { | 445 | if (!tref_isstr(tr)) { |
444 | if (!tref_isnumber(tr)) | 446 | if (!tref_isnumber(tr)) |
445 | lj_trace_err(J, LJ_TRERR_BADTYPE); | 447 | lj_trace_err(J, LJ_TRERR_BADTYPE); |
446 | tr = emitir(IRT(IR_TOSTR, IRT_STR), tr, 0); | 448 | tr = emitir(IRT(IR_TOSTR, IRT_STR), tr, |
449 | tref_isnum(tr) ? IRTOSTR_NUM : IRTOSTR_INT); | ||
447 | } | 450 | } |
448 | return tr; | 451 | return tr; |
449 | } | 452 | } |