From 5140b40b44e8ff665f8e63293500f6dcc3c43bc7 Mon Sep 17 00:00:00 2001 From: Mike Pall Date: Mon, 11 Oct 2010 17:26:07 +0200 Subject: x64: Optimize internal/external tag conversion in lua_type(). --- src/lj_api.c | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'src') diff --git a/src/lj_api.c b/src/lj_api.c index 852c8c8b..827ab42f 100644 --- a/src/lj_api.c +++ b/src/lj_api.c @@ -196,7 +196,11 @@ LUA_API int lua_type(lua_State *L, int idx) return LUA_TNONE; } else { /* Magic internal/external tag conversion. ORDER LJ_T */ uint32_t t = ~itype(o); +#if LJ_64 + int tt = (int)((U64x(7506,98042110) >> 4*t) & 15u); +#else int tt = (int)(((t < 8 ? 0x98042110 : 0x7506) >> 4*(t&7)) & 15u); +#endif lua_assert(tt != LUA_TNIL || tvisnil(o)); return tt; } -- cgit v1.2.3-55-g6feb