aboutsummaryrefslogtreecommitdiff
path: root/libstdc++-v3
diff options
context:
space:
mode:
authorPaolo Carlini <pcarlini@suse.de>2007-12-05 19:09:11 +0000
committerPaolo Carlini <paolo@gcc.gnu.org>2007-12-05 19:09:11 +0000
commitbce623434fce35c3d515224b70e08d03fabce691 (patch)
tree9e14d8026ae41f3db3c08657adc09c72ea15bbd1 /libstdc++-v3
parent3898fe8e7cdf79c37a476c2169b4386f33a9bee3 (diff)
downloadgcc-bce623434fce35c3d515224b70e08d03fabce691.zip
gcc-bce623434fce35c3d515224b70e08d03fabce691.tar.gz
gcc-bce623434fce35c3d515224b70e08d03fabce691.tar.bz2
hashtable_policy.h (_Prime_rehash_policy:: _S_n_primes): Add.
2007-12-05 Paolo Carlini <pcarlini@suse.de> * include/tr1_impl/hashtable_policy.h (_Prime_rehash_policy:: _S_n_primes): Add. (_Prime_rehash_policy::_M_next_bkt, _M_bkt_for_elements, _M_need_rehash): Adjust. From-SVN: r130628
Diffstat (limited to 'libstdc++-v3')
-rw-r--r--libstdc++-v3/ChangeLog7
-rw-r--r--libstdc++-v3/include/tr1_impl/hashtable_policy.h13
2 files changed, 13 insertions, 7 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index 919d13b..440930c 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,10 @@
+2007-12-05 Paolo Carlini <pcarlini@suse.de>
+
+ * include/tr1_impl/hashtable_policy.h (_Prime_rehash_policy::
+ _S_n_primes): Add.
+ (_Prime_rehash_policy::_M_next_bkt, _M_bkt_for_elements,
+ _M_need_rehash): Adjust.
+
2007-12-03 Paolo Carlini <pcarlini@suse.de>
* src/hashtable.cc (__prime_list): Use __SIZEOF_LONG__.
diff --git a/libstdc++-v3/include/tr1_impl/hashtable_policy.h b/libstdc++-v3/include/tr1_impl/hashtable_policy.h
index a636125..514d444 100644
--- a/libstdc++-v3/include/tr1_impl/hashtable_policy.h
+++ b/libstdc++-v3/include/tr1_impl/hashtable_policy.h
@@ -405,7 +405,9 @@ namespace __detail
std::pair<bool, std::size_t>
_M_need_rehash(std::size_t __n_bkt, std::size_t __n_elt,
std::size_t __n_ins) const;
-
+
+ enum { _S_n_primes = sizeof(unsigned long) != 8 ? 256 : 256 + 48 };
+
float _M_max_load_factor;
float _M_growth_factor;
mutable std::size_t _M_next_resize;
@@ -421,9 +423,8 @@ namespace __detail
_Prime_rehash_policy::
_M_next_bkt(std::size_t __n) const
{
- const int __n_primes = sizeof(unsigned long) != 8 ? 256 : 256 + 48;
const unsigned long* __p = std::lower_bound(__prime_list, __prime_list
- + __n_primes, __n);
+ + _S_n_primes, __n);
_M_next_resize = static_cast<std::size_t>(std::ceil(*__p
* _M_max_load_factor));
return *__p;
@@ -435,10 +436,9 @@ namespace __detail
_Prime_rehash_policy::
_M_bkt_for_elements(std::size_t __n) const
{
- const int __n_primes = sizeof(unsigned long) != 8 ? 256 : 256 + 48;
const float __min_bkts = __n / _M_max_load_factor;
const unsigned long* __p = std::lower_bound(__prime_list, __prime_list
- + __n_primes, __min_bkts);
+ + _S_n_primes, __min_bkts);
_M_next_resize = static_cast<std::size_t>(std::ceil(*__p
* _M_max_load_factor));
return *__p;
@@ -465,9 +465,8 @@ namespace __detail
if (__min_bkts > __n_bkt)
{
__min_bkts = std::max(__min_bkts, _M_growth_factor * __n_bkt);
- const int __n_primes = sizeof(unsigned long) != 8 ? 256 : 256 + 48;
const unsigned long* __p =
- std::lower_bound(__prime_list, __prime_list + __n_primes,
+ std::lower_bound(__prime_list, __prime_list + _S_n_primes,
__min_bkts);
_M_next_resize =
static_cast<std::size_t>(std::ceil(*__p * _M_max_load_factor));