LJ_GC64: Various followup fixes.

Contributed by Peter Cawley.
This commit is contained in:
Mike Pall 2016-10-20 20:55:12 +02:00
parent bdcaf4bfd9
commit 716f2daef8
2 changed files with 11 additions and 8 deletions

View File

@ -1247,6 +1247,7 @@ static void asm_href(ASMState *as, IRIns *ir, IROp merge)
} else { } else {
emit_rr(as, XO_MOV, tmp, key); emit_rr(as, XO_MOV, tmp, key);
#if LJ_GC64 #if LJ_GC64
checkmclim(as);
emit_gri(as, XG_ARITHi(XOg_XOR), dest, irt_toitype(kt) << 15); emit_gri(as, XG_ARITHi(XOg_XOR), dest, irt_toitype(kt) << 15);
if ((as->flags & JIT_F_BMI2)) { if ((as->flags & JIT_F_BMI2)) {
emit_i8(as, 32); emit_i8(as, 32);

View File

@ -2263,6 +2263,8 @@ void lj_record_ins(jit_State *J)
rc = lj_ir_kint(J, (int32_t)(int16_t)rc); rc = lj_ir_kint(J, (int32_t)(int16_t)rc);
break; break;
case BC_KNIL: case BC_KNIL:
if (LJ_FR2 && ra > J->maxslot)
J->base[ra-1] = 0;
while (ra <= rc) while (ra <= rc)
J->base[ra++] = TREF_NIL; J->base[ra++] = TREF_NIL;
if (rc >= J->maxslot) J->maxslot = rc+1; if (rc >= J->maxslot) J->maxslot = rc+1;