aboutsummaryrefslogtreecommitdiff
path: root/src/lj_tab.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/lj_tab.c')
-rw-r--r--src/lj_tab.c8
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)));