mirror of
https://github.com/LuaJIT/LuaJIT.git
synced 2025-02-07 15:14:08 +00:00
Merge branch 'master' into v2.1
This commit is contained in:
commit
c0d5240a25
@ -880,11 +880,19 @@ static void snap_unsink(jit_State *J, GCtrace *T, ExitState *ex,
|
|||||||
irs->o == IR_FSTORE,
|
irs->o == IR_FSTORE,
|
||||||
"sunk store with bad op %d", irs->o);
|
"sunk store with bad op %d", irs->o);
|
||||||
if (irk->o == IR_FREF) {
|
if (irk->o == IR_FREF) {
|
||||||
lj_assertJ(irk->op2 == IRFL_TAB_META,
|
switch (irk->op2) {
|
||||||
"sunk store with bad field %d", irk->op2);
|
case IRFL_TAB_META:
|
||||||
snap_restoreval(J, T, ex, snapno, rfilt, irs->op2, &tmp);
|
snap_restoreval(J, T, ex, snapno, rfilt, irs->op2, &tmp);
|
||||||
/* NOBARRIER: The table is new (marked white). */
|
/* NOBARRIER: The table is new (marked white). */
|
||||||
setgcref(t->metatable, obj2gco(tabV(&tmp)));
|
setgcref(t->metatable, obj2gco(tabV(&tmp)));
|
||||||
|
break;
|
||||||
|
case IRFL_TAB_NOMM:
|
||||||
|
/* Negative metamethod cache invalidated by lj_tab_set() below. */
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
lj_assertJ(0, "sunk store with bad field %d", irk->op2);
|
||||||
|
break;
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
irk = &T->ir[irk->op2];
|
irk = &T->ir[irk->op2];
|
||||||
if (irk->o == IR_KSLOT) irk = &T->ir[irk->op1];
|
if (irk->o == IR_KSLOT) irk = &T->ir[irk->op1];
|
||||||
|
Loading…
Reference in New Issue
Block a user