From c40fed5804f523cc90389941f1a16e5ee956ce5f Mon Sep 17 00:00:00 2001 From: Roy Frostig Date: Wed, 25 Aug 2010 17:42:36 -0700 Subject: Actually switch to using the bigger hashmap once a it finishes growing and rehashing. --- src/lib/map.rs | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'src/lib/map.rs') diff --git a/src/lib/map.rs b/src/lib/map.rs index b6162e02..ced31513 100644 --- a/src/lib/map.rs +++ b/src/lib/map.rs @@ -74,7 +74,7 @@ fn mk_hashmap[K, V](&hashfn[K] hasher, &eqfn[K] eqer) -> hashmap[K, V] { { let uint i = 0u; while (i < nbkts) { - let uint j = (hash[K](hasher, nbkts, key, i)); + let uint j = hash[K](hasher, nbkts, key, i); alt (bkts.(j)) { case (some[K, V](k, _)) { if (eqer(key, k)) { @@ -145,10 +145,12 @@ fn mk_hashmap[K, V](&hashfn[K] hasher, &eqfn[K] eqer) -> hashmap[K, V] { let util.rational load = rec(num=(nelts + 1u) as int, den=nbkts as int); if (!util.rational_leq(load, lf)) { let uint nnewbkts = _uint.next_power_of_two(nbkts + 1u); - let vec[mutable bucket[K, V]] newbkts = make_buckets[K, V](nnewbkts); rehash[K, V](hasher, eqer, bkts, nbkts, newbkts, nnewbkts); + bkts = newbkts; + nbkts = nnewbkts; } + if (insert_common[K, V](hasher, eqer, bkts, nbkts, key, val)) { nelts += 1u; ret true; -- cgit v1.2.3