diff options
author | Mike Pall <mike> | 2023-08-28 22:24:36 +0200 |
---|---|---|
committer | Mike Pall <mike> | 2023-08-28 22:24:36 +0200 |
commit | c0d5240a25f2229e9b2d833eb94bccf3f2d5c568 (patch) | |
tree | fb7bf38d14e0ce82fba1ee146874e93684783c24 /src | |
parent | 238a2a80bb17187e2cc439f99a6225953b577b3e (diff) | |
parent | 0ef51b495f9497aac77b41eb3d837c9c38b9424b (diff) | |
download | luajit-c0d5240a25f2229e9b2d833eb94bccf3f2d5c568.tar.gz luajit-c0d5240a25f2229e9b2d833eb94bccf3f2d5c568.tar.bz2 luajit-c0d5240a25f2229e9b2d833eb94bccf3f2d5c568.zip |
Merge branch 'master' into v2.1
Diffstat (limited to 'src')
-rw-r--r-- | src/lj_snap.c | 18 |
1 files changed, 13 insertions, 5 deletions
diff --git a/src/lj_snap.c b/src/lj_snap.c index 877ce099..68de208f 100644 --- a/src/lj_snap.c +++ b/src/lj_snap.c | |||
@@ -880,11 +880,19 @@ static void snap_unsink(jit_State *J, GCtrace *T, ExitState *ex, | |||
880 | irs->o == IR_FSTORE, | 880 | irs->o == IR_FSTORE, |
881 | "sunk store with bad op %d", irs->o); | 881 | "sunk store with bad op %d", irs->o); |
882 | if (irk->o == IR_FREF) { | 882 | if (irk->o == IR_FREF) { |
883 | lj_assertJ(irk->op2 == IRFL_TAB_META, | 883 | switch (irk->op2) { |
884 | "sunk store with bad field %d", irk->op2); | 884 | case IRFL_TAB_META: |
885 | snap_restoreval(J, T, ex, snapno, rfilt, irs->op2, &tmp); | 885 | snap_restoreval(J, T, ex, snapno, rfilt, irs->op2, &tmp); |
886 | /* NOBARRIER: The table is new (marked white). */ | 886 | /* NOBARRIER: The table is new (marked white). */ |
887 | setgcref(t->metatable, obj2gco(tabV(&tmp))); | 887 | setgcref(t->metatable, obj2gco(tabV(&tmp))); |
888 | break; | ||
889 | case IRFL_TAB_NOMM: | ||
890 | /* Negative metamethod cache invalidated by lj_tab_set() below. */ | ||
891 | break; | ||
892 | default: | ||
893 | lj_assertJ(0, "sunk store with bad field %d", irk->op2); | ||
894 | break; | ||
895 | } | ||
888 | } else { | 896 | } else { |
889 | irk = &T->ir[irk->op2]; | 897 | irk = &T->ir[irk->op2]; |
890 | if (irk->o == IR_KSLOT) irk = &T->ir[irk->op1]; | 898 | if (irk->o == IR_KSLOT) irk = &T->ir[irk->op1]; |