diff options
author | Mike Pall <mike> | 2012-09-12 16:58:47 +0200 |
---|---|---|
committer | Mike Pall <mike> | 2012-09-12 16:58:47 +0200 |
commit | aed20093781541c19b5c7d6149eda71a7141bc1c (patch) | |
tree | f86023d78e716262282c23d639a318dce1af7b65 /src/lj_tab.c | |
parent | 23932a6c8b7ef434bc963139b4160b1058fa6f7f (diff) | |
download | luajit-aed20093781541c19b5c7d6149eda71a7141bc1c.tar.gz luajit-aed20093781541c19b5c7d6149eda71a7141bc1c.tar.bz2 luajit-aed20093781541c19b5c7d6149eda71a7141bc1c.zip |
Fix despecialization of ITERN when already running.
Diffstat (limited to 'src/lj_tab.c')
-rw-r--r-- | src/lj_tab.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/src/lj_tab.c b/src/lj_tab.c index 40f75269..33d6d75b 100644 --- a/src/lj_tab.c +++ b/src/lj_tab.c | |||
@@ -545,6 +545,8 @@ static uint32_t keyindex(lua_State *L, GCtab *t, cTValue *key) | |||
545 | return t->asize + (uint32_t)(n - noderef(t->node)); | 545 | return t->asize + (uint32_t)(n - noderef(t->node)); |
546 | /* Hash key indexes: [t->asize..t->asize+t->nmask] */ | 546 | /* Hash key indexes: [t->asize..t->asize+t->nmask] */ |
547 | } while ((n = nextnode(n))); | 547 | } while ((n = nextnode(n))); |
548 | if (key->u32.hi == 0xfffe7fff) /* ITERN was despecialized while running. */ | ||
549 | return key->u32.lo - 1; | ||
548 | lj_err_msg(L, LJ_ERR_NEXTIDX); | 550 | lj_err_msg(L, LJ_ERR_NEXTIDX); |
549 | return 0; /* unreachable */ | 551 | return 0; /* unreachable */ |
550 | } | 552 | } |