aboutsummaryrefslogtreecommitdiff
path: root/src/lj_ir.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/lj_ir.h')
-rw-r--r--src/lj_ir.h11
1 files changed, 9 insertions, 2 deletions
diff --git a/src/lj_ir.h b/src/lj_ir.h
index 14b86165..bc89edf9 100644
--- a/src/lj_ir.h
+++ b/src/lj_ir.h
@@ -320,6 +320,7 @@ IRTDEF(IRTENUM)
320 IRT_PTR = LJ_64 ? IRT_P64 : IRT_P32, 320 IRT_PTR = LJ_64 ? IRT_P64 : IRT_P32,
321 IRT_INTP = LJ_64 ? IRT_I64 : IRT_INT, 321 IRT_INTP = LJ_64 ? IRT_I64 : IRT_INT,
322 IRT_UINTP = LJ_64 ? IRT_U64 : IRT_U32, 322 IRT_UINTP = LJ_64 ? IRT_U64 : IRT_U32,
323 /* TODO_GC64: major changes required for all uses of IRT_P32. */
323 324
324 /* Additional flags. */ 325 /* Additional flags. */
325 IRT_MARK = 0x20, /* Marker for misc. purposes. */ 326 IRT_MARK = 0x20, /* Marker for misc. purposes. */
@@ -371,7 +372,12 @@ typedef struct IRType1 { uint8_t irt; } IRType1;
371#define irt_isaddr(t) (irt_typerange((t), IRT_LIGHTUD, IRT_UDATA)) 372#define irt_isaddr(t) (irt_typerange((t), IRT_LIGHTUD, IRT_UDATA))
372#define irt_isint64(t) (irt_typerange((t), IRT_I64, IRT_U64)) 373#define irt_isint64(t) (irt_typerange((t), IRT_I64, IRT_U64))
373 374
374#if LJ_64 375#if LJ_GC64
376#define IRT_IS64 \
377 ((1u<<IRT_NUM)|(1u<<IRT_I64)|(1u<<IRT_U64)|(1u<<IRT_P64)|\
378 (1u<<IRT_LIGHTUD)|(1u<<IRT_STR)|(1u<<IRT_THREAD)|(1u<<IRT_PROTO)|\
379 (1u<<IRT_FUNC)|(1u<<IRT_CDATA)|(1u<<IRT_TAB)|(1u<<IRT_UDATA))
380#elif LJ_64
375#define IRT_IS64 \ 381#define IRT_IS64 \
376 ((1u<<IRT_NUM)|(1u<<IRT_I64)|(1u<<IRT_U64)|(1u<<IRT_P64)|(1u<<IRT_LIGHTUD)) 382 ((1u<<IRT_NUM)|(1u<<IRT_I64)|(1u<<IRT_U64)|(1u<<IRT_P64)|(1u<<IRT_LIGHTUD))
377#else 383#else
@@ -392,7 +398,7 @@ static LJ_AINLINE IRType itype2irt(const TValue *tv)
392 return IRT_INT; 398 return IRT_INT;
393 else if (tvisnum(tv)) 399 else if (tvisnum(tv))
394 return IRT_NUM; 400 return IRT_NUM;
395#if LJ_64 401#if LJ_64 && !LJ_GC64
396 else if (tvislightud(tv)) 402 else if (tvislightud(tv))
397 return IRT_LIGHTUD; 403 return IRT_LIGHTUD;
398#endif 404#endif
@@ -547,6 +553,7 @@ typedef union IRIns {
547 MRef ptr; /* Pointer constant (overlaps op12). */ 553 MRef ptr; /* Pointer constant (overlaps op12). */
548} IRIns; 554} IRIns;
549 555
556/* TODO_GC64: major changes required. */
550#define ir_kgc(ir) check_exp((ir)->o == IR_KGC, gcref((ir)->gcr)) 557#define ir_kgc(ir) check_exp((ir)->o == IR_KGC, gcref((ir)->gcr))
551#define ir_kstr(ir) (gco2str(ir_kgc((ir)))) 558#define ir_kstr(ir) (gco2str(ir_kgc((ir))))
552#define ir_ktab(ir) (gco2tab(ir_kgc((ir)))) 559#define ir_ktab(ir) (gco2tab(ir_kgc((ir))))