Specialize to the global environment

This commit is contained in:
Jude Melton-Houghton 2022-11-14 08:43:34 -05:00
parent 7a0cf5fd4c
commit 0c70d3d34f

View File

@ -2456,6 +2456,12 @@ void lj_record_ins(jit_State *J)
case BC_GGET: case BC_GSET:
settabV(J->L, &ix.tabv, tabref(J->fn->l.env));
ix.tab = emitir(IRT(IR_FLOAD, IRT_TAB), getcurrf(J), IRFL_FUNC_ENV);
if (gcrefeq(J->fn->l.env, J->L->env)) {
/* Specialize to the global environment. */
TRef ktab = lj_ir_ktab(J, tabref(J->fn->l.env));
emitir(IRTG(IR_EQ, IRT_TAB), ix.tab, ktab);
ix.tab = ktab;
}
ix.idxchain = LJ_MAX_IDXCHAIN;
rc = lj_record_idx(J, &ix);
break;