diff --git a/src/lj_asm.c b/src/lj_asm.c index bed2268e..d961927b 100644 --- a/src/lj_asm.c +++ b/src/lj_asm.c @@ -1017,7 +1017,11 @@ static uint32_t ir_khash(IRIns *ir) } else { lua_assert(irt_isgcv(ir->t)); lo = u32ptr(ir_kgc(ir)); +#if LJ_GC64 + hi = (uint32_t)(u64ptr(ir_kgc(ir)) >> 32) | (irt_toitype(ir->t) << 15); +#else hi = lo + HASH_BIAS; +#endif } return hashrot(lo, hi); }