[libgee/coalesed-hash: 2/6] Fixes
- From: Maciej Marcin Piechotka <mpiechotka src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [libgee/coalesed-hash: 2/6] Fixes
- Date: Mon, 4 Mar 2013 17:08:56 +0000 (UTC)
commit 058d59fffb177f856ce16473728dfd2c47d20911
Author: Maciej Piechotka <uzytkownik2 gmail com>
Date: Wed Jan 2 14:04:32 2013 +0100
Fixes
gee/hash.vala | 6 +++---
gee/hashset.vala | 5 ++++-
2 files changed, 7 insertions(+), 4 deletions(-)
---
diff --git a/gee/hash.vala b/gee/hash.vala
index a2423d8..48e2784 100644
--- a/gee/hash.vala
+++ b/gee/hash.vala
@@ -484,7 +484,7 @@ class Gee.Hash {
}
}
- private static inline uint _folded_hash (uint hash, uint size) {
+ private static inline uint _folded_hash (uint hash, int size) {
return hash;
}
@@ -829,8 +829,8 @@ class Gee.Hash {
REPLACE
}
- private static const int ARRAY_THRESHOLD = 9;
- private static const double ALPHA = 0.9;
+ internal static const int ARRAY_THRESHOLD = 9;
+ private static const double ALPHA = 0.7;
private static const double BETA = 0.86;
private static const uint LINK_END = 0x7fffffff; //uint.MAX >> 1;
}
diff --git a/gee/hashset.vala b/gee/hashset.vala
index 5ce8e01..1498823 100644
--- a/gee/hashset.vala
+++ b/gee/hashset.vala
@@ -216,7 +216,10 @@ public class Gee.HashSet<G> : AbstractSet<G> {
assert (valid);
uint first = 0, last = 0;
unowned G element = Hash.get_key<G> (Hash.Flags.CACHE_HASH, _set._data,
_set._dummy_size, _index);
- _index = Hash.get_next (Hash.Flags.CACHE_HASH, _set._data, _set._dummy_size,
_set._real_size, _index);
+ if (_set._dummy_size >= Hash.ARRAY_THRESHOLD)
+ _index = Hash.get_next (Hash.Flags.CACHE_HASH, _set._data, _set._dummy_size,
_set._real_size, _index);
+ else if (_index == _set._real_size - 1)
+ _index = -1;
bool res = Hash.delete<G, void *> (Hash.Flags.CACHE_HASH, ref _set._data, ref
_set._dummy_size, ref _set._real_size, element, null, _set.hash_func, _set.equal_func, ref first, ref last,
ref _set._cellar_free, ref _set._address_free, false);
assert (res);
_set._stamp = ++_stamp;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]