|
@@ -562,6 +562,11 @@ typedef union IRIns {
|
|
|
TValue tv; /* TValue constant (overlaps entire slot). */
|
|
|
} IRIns;
|
|
|
|
|
|
+#define ir_isk64(ir) \
|
|
|
+ ((ir)->o == IR_KNUM || (ir)->o == IR_KINT64 || \
|
|
|
+ (LJ_GC64 && \
|
|
|
+ ((ir)->o == IR_KGC || (ir)->o == IR_KPTR || (ir)->o == IR_KKPTR)))
|
|
|
+
|
|
|
#define ir_kgc(ir) check_exp((ir)->o == IR_KGC, gcref((ir)[LJ_GC64].gcr))
|
|
|
#define ir_kstr(ir) (gco2str(ir_kgc((ir))))
|
|
|
#define ir_ktab(ir) (gco2tab(ir_kgc((ir))))
|
|
@@ -569,12 +574,7 @@ typedef union IRIns {
|
|
|
#define ir_kcdata(ir) (gco2cd(ir_kgc((ir))))
|
|
|
#define ir_knum(ir) check_exp((ir)->o == IR_KNUM, &(ir)[1].tv)
|
|
|
#define ir_kint64(ir) check_exp((ir)->o == IR_KINT64, &(ir)[1].tv)
|
|
|
-#define ir_k64(ir) \
|
|
|
- check_exp((ir)->o == IR_KNUM || (ir)->o == IR_KINT64 || \
|
|
|
- (LJ_GC64 && \
|
|
|
- ((ir)->o == IR_KGC || \
|
|
|
- (ir)->o == IR_KPTR || (ir)->o == IR_KKPTR)), \
|
|
|
- &(ir)[1].tv)
|
|
|
+#define ir_k64(ir) check_exp(ir_isk64(ir), &(ir)[1].tv)
|
|
|
#define ir_kptr(ir) \
|
|
|
check_exp((ir)->o == IR_KPTR || (ir)->o == IR_KKPTR, \
|
|
|
mref((ir)[LJ_GC64].ptr, void))
|