[PATCH][Hashtable 5/6] Remove H1/H2 template parameters

François Dumont frs.dumont@gmail.com
Thu Dec 19 20:24:00 GMT 2019


Because of this change printers.py has to be updated too.

François


On 11/17/19 10:15 PM, François Dumont wrote:
> H1 used to be a reference to the user Hash, now _Hashtable and 
> unordered types agree on the same Hash type which is more intuitive.
>
> I also chose to not support anymore a stateful ranged hash functor. We 
> only use _Mod_range_hashing and _Mask_range_hashing.
>
> Thanks to this simplification _M_bucket_index can also be simplified.
>
>     * include/bits/hashtable_policy.h (_Hashtable<>): Remove _H1 and _H2
>     template parameters.
>     (_Hastable_base<>): Likewise.
>     (_Default_ranged_hash): Remove.
>     (_Prime_rehash_policy::__ranged_hash): New.
>     (_Power2_rehash_policy::__ranged_hash): New.
>     (_Map_base<>): Remove _H1 and _H2 template parameters.
>     (_Insert_base<>): Likewise.
>     (_Insert<>): Likewise.
>     (_Rehash_base<>): Likewise.
>     (_Local_iterator_base<>): Remove _H1 and _H2 template parameters 
> and add
>     _RangedHash.
>     (_Hash_code_base<>): Likewise.
>     (_Hash_code_base<_Key, _Value, _ExtractKey, _H1, _H2, _Hash,
>     __hash_not_cached_t>): Remove.
>     (_Hash_code_base<>::_M_bucket_index(const _Key&, __hash_code, 
> size_t)):
>     Replace by...
>     (_Hash_code_base<>::_M_bucket_index(__hash_code, size_t)): ...this.
>     (_Local_iterator<>): Remove _H1 and _H2 template parameters.
>     (_Local_const_iterator<>): Likewise.
>     (_Equality<>): Likewise.
>     * include/bits/hashtable.h (_Hashtable<>): Remove _H1 and _H2 
> template
>     parameters.
>     * include/bits/node_handle.h: Adapt.
>     * include/bits/unordered_map.h: Adapt.
>     * include/bits/unordered_set.h: Adapt.
>     * testsuite/23_containers/unordered_set/hash_policy/26132.cc: Adapt.
>     * testsuite/23_containers/unordered_set/hash_policy/71181.cc: Adapt.
>     * testsuite/23_containers/unordered_set/hash_policy/load_factor.cc:
>     Adapt.
>     * testsuite/23_containers/unordered_set/hash_policy/rehash.cc: Adapt.
>     * testsuite/23_containers/unordered_set/insert/hash_policy.cc: Adapt.
>     * 
> testsuite/23_containers/unordered_set/max_load_factor/robustness.cc:
>     Adapt.
>     * testsuite/performance/23_containers/insert/54075.cc: Adapt.
>     * testsuite/performance/23_containers/insert_erase/41975.cc: Adapt.
>     * testsuite/performance/23_containers/insert_erase/
>     unordered_small_size.cc: Adapt.
>
> Tested under Linux x86_64.
>
> François
>
>

-------------- next part --------------
A non-text attachment was scrubbed...
Name: hashtable#6.patch
Type: text/x-patch
Size: 89167 bytes
Desc: not available
URL: <http://gcc.gnu.org/pipermail/gcc-patches/attachments/20191219/ad567351/attachment.bin>


More information about the Gcc-patches mailing list