aboutsummaryrefslogtreecommitdiff
path: root/src/lj_ir.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/lj_ir.c')
-rw-r--r--src/lj_ir.c9
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}