diff options
Diffstat (limited to 'src/lj_tab.c')
-rw-r--r-- | src/lj_tab.c | 23 |
1 files changed, 2 insertions, 21 deletions
diff --git a/src/lj_tab.c b/src/lj_tab.c index 27e58f0a..ed5fd2dd 100644 --- a/src/lj_tab.c +++ b/src/lj_tab.c | |||
@@ -16,25 +16,6 @@ | |||
16 | 16 | ||
17 | /* -- Object hashing ------------------------------------------------------ */ | 17 | /* -- Object hashing ------------------------------------------------------ */ |
18 | 18 | ||
19 | /* Hash values are masked with the table hash mask and used as an index. */ | ||
20 | static LJ_AINLINE Node *hashmask(const GCtab *t, uint32_t hash) | ||
21 | { | ||
22 | Node *n = noderef(t->node); | ||
23 | return &n[hash & t->hmask]; | ||
24 | } | ||
25 | |||
26 | /* String IDs are generated when a string is interned. */ | ||
27 | #define hashstr(t, s) hashmask(t, (s)->sid) | ||
28 | |||
29 | #define hashlohi(t, lo, hi) hashmask((t), hashrot((lo), (hi))) | ||
30 | #define hashnum(t, o) hashlohi((t), (o)->u32.lo, ((o)->u32.hi << 1)) | ||
31 | #if LJ_GC64 | ||
32 | #define hashgcref(t, r) \ | ||
33 | hashlohi((t), (uint32_t)gcrefu(r), (uint32_t)(gcrefu(r) >> 32)) | ||
34 | #else | ||
35 | #define hashgcref(t, r) hashlohi((t), gcrefu(r), gcrefu(r) + HASH_BIAS) | ||
36 | #endif | ||
37 | |||
38 | /* Hash an arbitrary key and return its anchor position in the hash table. */ | 19 | /* Hash an arbitrary key and return its anchor position in the hash table. */ |
39 | static Node *hashkey(const GCtab *t, cTValue *key) | 20 | static Node *hashkey(const GCtab *t, cTValue *key) |
40 | { | 21 | { |
@@ -413,7 +394,7 @@ cTValue * LJ_FASTCALL lj_tab_getinth(GCtab *t, int32_t key) | |||
413 | return NULL; | 394 | return NULL; |
414 | } | 395 | } |
415 | 396 | ||
416 | cTValue *lj_tab_getstr(GCtab *t, GCstr *key) | 397 | cTValue *lj_tab_getstr(GCtab *t, const GCstr *key) |
417 | { | 398 | { |
418 | Node *n = hashstr(t, key); | 399 | Node *n = hashstr(t, key); |
419 | do { | 400 | do { |
@@ -546,7 +527,7 @@ TValue *lj_tab_setinth(lua_State *L, GCtab *t, int32_t key) | |||
546 | return lj_tab_newkey(L, t, &k); | 527 | return lj_tab_newkey(L, t, &k); |
547 | } | 528 | } |
548 | 529 | ||
549 | TValue *lj_tab_setstr(lua_State *L, GCtab *t, GCstr *key) | 530 | TValue *lj_tab_setstr(lua_State *L, GCtab *t, const GCstr *key) |
550 | { | 531 | { |
551 | TValue k; | 532 | TValue k; |
552 | Node *n = hashstr(t, key); | 533 | Node *n = hashstr(t, key); |