diff options
Diffstat (limited to 'src/lj_tab.c')
-rw-r--r-- | src/lj_tab.c | 8 |
1 files changed, 3 insertions, 5 deletions
diff --git a/src/lj_tab.c b/src/lj_tab.c index d77aa05a..5d68cc54 100644 --- a/src/lj_tab.c +++ b/src/lj_tab.c | |||
@@ -192,7 +192,7 @@ GCtab * LJ_FASTCALL lj_tab_dup(lua_State *L, const GCtab *kt) | |||
192 | Node *kn = &knode[i]; | 192 | Node *kn = &knode[i]; |
193 | Node *n = &node[i]; | 193 | Node *n = &node[i]; |
194 | Node *next = nextnode(kn); | 194 | Node *next = nextnode(kn); |
195 | /* Don't use copyTV here, since it asserts on a copy of a DEADKEY. */ | 195 | /* Don't use copyTV here, since it asserts on a copy of a dead key. */ |
196 | n->val = kn->val; n->key = kn->key; | 196 | n->val = kn->val; n->key = kn->key; |
197 | setmref(n->next, next == NULL? next : (Node *)((char *)next + d)); | 197 | setmref(n->next, next == NULL? next : (Node *)((char *)next + d)); |
198 | } | 198 | } |
@@ -448,7 +448,7 @@ TValue *lj_tab_newkey(lua_State *L, GCtab *t, cTValue *key) | |||
448 | n->key.u64 = key->u64; | 448 | n->key.u64 = key->u64; |
449 | if (LJ_UNLIKELY(tvismzero(&n->key))) | 449 | if (LJ_UNLIKELY(tvismzero(&n->key))) |
450 | n->key.u64 = 0; | 450 | n->key.u64 = 0; |
451 | lj_gc_barriert(L, t, key); | 451 | lj_gc_anybarriert(L, t); |
452 | lua_assert(tvisnil(&n->val)); | 452 | lua_assert(tvisnil(&n->val)); |
453 | return &n->val; | 453 | return &n->val; |
454 | } | 454 | } |
@@ -517,9 +517,7 @@ static uint32_t keyindex(lua_State *L, GCtab *t, cTValue *key) | |||
517 | if (!tvisnil(key)) { | 517 | if (!tvisnil(key)) { |
518 | Node *n = hashkey(t, key); | 518 | Node *n = hashkey(t, key); |
519 | do { | 519 | do { |
520 | if (lj_obj_equal(&n->key, key) || | 520 | if (lj_obj_equal(&n->key, key)) |
521 | (itype(&n->key) == LJ_TDEADKEY && tvisgcv(key) && | ||
522 | gcV(&n->key) == gcV(key))) | ||
523 | return t->asize + (uint32_t)(n - noderef(t->node)); | 521 | return t->asize + (uint32_t)(n - noderef(t->node)); |
524 | /* Hash key indexes: [t->asize..t->asize+t->nmask] */ | 522 | /* Hash key indexes: [t->asize..t->asize+t->nmask] */ |
525 | } while ((n = nextnode(n))); | 523 | } while ((n = nextnode(n))); |