diff options
Diffstat (limited to 'src/lj_ir.h')
-rw-r--r-- | src/lj_ir.h | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/src/lj_ir.h b/src/lj_ir.h index 4e9c85c7..e77f7b99 100644 --- a/src/lj_ir.h +++ b/src/lj_ir.h | |||
@@ -412,7 +412,7 @@ static LJ_AINLINE IRType itype2irt(const TValue *tv) | |||
412 | 412 | ||
413 | static LJ_AINLINE uint32_t irt_toitype_(IRType t) | 413 | static LJ_AINLINE uint32_t irt_toitype_(IRType t) |
414 | { | 414 | { |
415 | lua_assert(!LJ_64 || t != IRT_LIGHTUD); | 415 | lua_assert(!LJ_64 || LJ_GC64 || t != IRT_LIGHTUD); |
416 | if (LJ_DUALNUM && t > IRT_NUM) { | 416 | if (LJ_DUALNUM && t > IRT_NUM) { |
417 | return LJ_TISNUM; | 417 | return LJ_TISNUM; |
418 | } else { | 418 | } else { |
@@ -568,7 +568,11 @@ typedef union IRIns { | |||
568 | #define ir_knum(ir) check_exp((ir)->o == IR_KNUM, &(ir)[1].tv) | 568 | #define ir_knum(ir) check_exp((ir)->o == IR_KNUM, &(ir)[1].tv) |
569 | #define ir_kint64(ir) check_exp((ir)->o == IR_KINT64, &(ir)[1].tv) | 569 | #define ir_kint64(ir) check_exp((ir)->o == IR_KINT64, &(ir)[1].tv) |
570 | #define ir_k64(ir) \ | 570 | #define ir_k64(ir) \ |
571 | check_exp((ir)->o == IR_KNUM || (ir)->o == IR_KINT64, &(ir)[1].tv) | 571 | check_exp((ir)->o == IR_KNUM || (ir)->o == IR_KINT64 || \ |
572 | (LJ_GC64 && \ | ||
573 | ((ir)->o == IR_KGC || \ | ||
574 | (ir)->o == IR_KPTR || (ir)->o == IR_KKPTR)), \ | ||
575 | &(ir)[1].tv) | ||
572 | #define ir_kptr(ir) \ | 576 | #define ir_kptr(ir) \ |
573 | check_exp((ir)->o == IR_KPTR || (ir)->o == IR_KKPTR, \ | 577 | check_exp((ir)->o == IR_KPTR || (ir)->o == IR_KKPTR, \ |
574 | mref((ir)[LJ_GC64].ptr, void)) | 578 | mref((ir)[LJ_GC64].ptr, void)) |