diff mbox

Hide _S_n_primes from user code

Message ID 55380079.3000105@gmail.com
State New
Headers show

Commit Message

François Dumont April 22, 2015, 8:11 p.m. UTC
With the patch this time.


On 22/04/2015 21:39, François Dumont wrote:
> Hello
>
>     Here is a rather trivial patch, just code cleanup. Since we export 
> _Prime_rehash_policy we do not need to expose the _S_n_primes anymore.
>
>     * include/bits/hashtable_policy.h 
> (_Prime_rehash_policy::_S_n_primes):
>     Delete.
>     * src/c++11/hashtable_c++0x.cc (_Prime_rehash_policy::_M_next_bkt):
>     Remove usage of latter and compute size of the prime numbers array
>     locally.
>
> Tested under Linux x86_64.
>
> Ok to commit ?
>
> François
>

Comments

Jonathan Wakely April 27, 2015, 11:31 a.m. UTC | #1
On 22/04/15 22:11 +0200, François Dumont wrote:
>+    constexpr auto __n_primes
>+      = sizeof(__prime_list) / sizeof(unsigned long) - 1;

Normally I'd say

        sizeof(__prime_list) / sizeof(*__prime_list) - 1

would be better, but since it's very unlikely we'll change the element
type in the array what you have should be safe.

OK for trunk.
diff mbox

Patch

diff --git a/libstdc++-v3/include/bits/hashtable_policy.h b/libstdc++-v3/include/bits/hashtable_policy.h
index 14bcca6..a9ad7dd 100644
--- a/libstdc++-v3/include/bits/hashtable_policy.h
+++ b/libstdc++-v3/include/bits/hashtable_policy.h
@@ -495,8 +495,6 @@  _GLIBCXX_BEGIN_NAMESPACE_VERSION
     _M_reset(_State __state)
     { _M_next_resize = __state; }
 
-    enum { _S_n_primes = sizeof(unsigned long) != 8 ? 256 : 256 + 48 };
-
     static const std::size_t _S_growth_factor = 2;
 
     float		_M_max_load_factor;
diff --git a/libstdc++-v3/src/c++11/hashtable_c++0x.cc b/libstdc++-v3/src/c++11/hashtable_c++0x.cc
index 22de51b..69f999f 100644
--- a/libstdc++-v3/src/c++11/hashtable_c++0x.cc
+++ b/libstdc++-v3/src/c++11/hashtable_c++0x.cc
@@ -56,8 +56,10 @@  namespace __detail
 	return __fast_bkt[__n];
       }
 
+    constexpr auto __n_primes
+      = sizeof(__prime_list) / sizeof(unsigned long) - 1;
     const unsigned long* __next_bkt =
-      std::lower_bound(__prime_list + 5, __prime_list + _S_n_primes, __n);
+      std::lower_bound(__prime_list + 5, __prime_list + __n_primes, __n);
     _M_next_resize =
       __builtin_ceil(*__next_bkt * (long double)_M_max_load_factor);
     return *__next_bkt;