diff options
| author | ksss <[email protected]> | 2014-04-06 13:26:10 +0000 |
|---|---|---|
| committer | ksss <[email protected]> | 2014-04-06 13:26:10 +0000 |
| commit | 40eaf7058cd186371d672d21c3301e515df8cb9b (patch) | |
| tree | 4fb5510de38c8eb2e064a10f574e592054bc569e /include | |
| parent | 950fe963ac99b33ccfc9c37ad4649e22467f4591 (diff) | |
| download | mruby-40eaf7058cd186371d672d21c3301e515df8cb9b.tar.gz mruby-40eaf7058cd186371d672d21c3301e515df8cb9b.zip | |
Delete khash_mask macro.
And fix expression to more simple and readable.
Diffstat (limited to 'include')
| -rw-r--r-- | include/mruby/khash.h | 9 |
1 files changed, 4 insertions, 5 deletions
diff --git a/include/mruby/khash.h b/include/mruby/khash.h index 28bbfe434..ad83e8cb2 100644 --- a/include/mruby/khash.h +++ b/include/mruby/khash.h @@ -44,7 +44,6 @@ static const uint8_t __m_either[] = {0x03, 0x0c, 0x30, 0xc0}; v |= v >> 16;\ v++;\ } while (0) -#define khash_mask(h) ((h)->n_buckets-1) #define khash_inc(h) ((h)->n_buckets/2-1) #define khash_upper_bound(h) (UPPER_BOUND((h)->n_buckets)) @@ -133,13 +132,13 @@ kh_fill_flags(uint8_t *p, uint8_t c, size_t len) } \ khint_t kh_get_##name(mrb_state *mrb, kh_##name##_t *h, khkey_t key) \ { \ - khint_t k = __hash_func(mrb,key) & khash_mask(h); \ + khint_t k = __hash_func(mrb,key) % h->n_buckets; \ (void)mrb; \ while (!__ac_isempty(h->ed_flags, k)) { \ if (!__ac_isdel(h->ed_flags, k)) { \ if (__hash_equal(mrb,h->keys[k], key)) return k; \ } \ - k = (k+khash_inc(h)) & khash_mask(h); \ + k = (k+khash_inc(h)) % h->n_buckets; \ } \ return h->n_buckets; \ } \ @@ -172,10 +171,10 @@ kh_fill_flags(uint8_t *p, uint8_t c, size_t len) if (h->n_occupied >= khash_upper_bound(h)) { \ kh_resize_##name(mrb, h, h->n_buckets*2); \ } \ - k = __hash_func(mrb,key) & khash_mask(h); \ + k = __hash_func(mrb,key) % h->n_buckets; \ while (!__ac_iseither(h->ed_flags, k)) { \ if (__hash_equal(mrb,h->keys[k], key)) break; \ - k = (k+khash_inc(h)) & khash_mask(h); \ + k = (k+khash_inc(h)) % h->n_buckets; \ } \ if (__ac_isempty(h->ed_flags, k)) { \ /* put at empty */ \ |
