From a70fb9416a535146dc60b680313c8ef7fa7daaf6 Mon Sep 17 00:00:00 2001 From: Mike Pall Date: Tue, 28 Dec 2010 18:23:41 +0100 Subject: [PATCH] Make recording of type() independent of LJ_T*/IRT_* mapping. --- src/lj_ffrecord.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/lj_ffrecord.c b/src/lj_ffrecord.c index e2f8a39f..b7ee06cd 100644 --- a/src/lj_ffrecord.c +++ b/src/lj_ffrecord.c @@ -127,7 +127,13 @@ static void LJ_FASTCALL recff_assert(jit_State *J, RecordFFData *rd) static void LJ_FASTCALL recff_type(jit_State *J, RecordFFData *rd) { /* Arguments already specialized. Result is a constant string. Neat, huh? */ - IRType t = tref_isinteger(J->base[0]) ? IRT_NUM : tref_type(J->base[0]); + uint32_t t; + if (tvisnum(&rd->argv[0])) + t = ~LJ_TNUMX; + else if (LJ_64 && tvislightud(&rd->argv[0])) + t = ~LJ_TLIGHTUD; + else + t = ~itype(&rd->argv[0]); J->base[0] = lj_ir_kstr(J, strV(&J->fn->c.upvalue[t])); UNUSED(rd); }