Lines Matching refs:h

240     bucket *get_bucket( hashcode_type h ) const noexcept {  in get_bucket()  argument
241 segment_index_type s = segment_index_of( h ); in get_bucket()
242 h -= segment_base(s); in get_bucket()
245 return &seg[h]; in get_bucket()
249 void mark_rehashed_levels( hashcode_type h ) noexcept { in mark_rehashed_levels() argument
250 segment_index_type s = segment_index_of( h ); in mark_rehashed_levels()
252 if (rehash_required(seg[h].node_list.load(std::memory_order_relaxed))) { in mark_rehashed_levels()
253 …seg[h].node_list.store(reinterpret_cast<node_base*>(empty_rehashed_flag), std::memory_order_relaxe… in mark_rehashed_levels()
254 mark_rehashed_levels( h + ((hashcode_type)1<<s) ); // optimized segment_base(s) in mark_rehashed_levels()
260 inline bool check_mask_race( const hashcode_type h, hashcode_type &m ) const { in check_mask_race() argument
264 return check_rehashing_collision(h, m_old, m = m_now); in check_mask_race()
270 …bool check_rehashing_collision( const hashcode_type h, hashcode_type m_old, hashcode_type m ) cons… in check_rehashing_collision() argument
272 if( (h & m_old) != (h & m) ) { // mask changed for this hashcode, rare event in check_rehashing_collision()
275 …for( ++m_old; !(h & m_old); m_old <<= 1 ) // at maximum few rounds depending on the first block si… in check_rehashing_collision()
280 … if (!rehash_required(get_bucket(h & m_old)->node_list.load(std::memory_order_acquire))) { in check_rehashing_collision()
709 …cessor( concurrent_hash_map *base, const hashcode_type h, bool writer = false ) { acquire( base, h in __TBB_requires()
711 … inline void acquire( concurrent_hash_map *base, const hashcode_type h, bool writer = false ) { in __TBB_requires()
712 my_b = base->get_bucket( h ); in __TBB_requires()
717 …my_b->node_list.load(std::memory_order_relaxed))) base->rehash_bucket(my_b, h); // recursive rehas… in __TBB_requires()
973 hashcode_type h = b; bucket *b_old = bp; in __TBB_requires() local
975 __TBB_ASSERT( h > 1, "The lowermost buckets can't be rehashed" ); in __TBB_requires()
976 …hashcode_type m = ( hashcode_type(1) << tbb::detail::log2( h ) ) - 1; // get parent mask from the … in __TBB_requires()
977 b_old = this->get_bucket( h &= m ); in __TBB_requires()
980 … this->mark_rehashed_levels( h ); // mark all non-rehashed children recursively across all segments in __TBB_requires()
986 if ((curr_node_hash & mask) != h) { // should be rehashed in __TBB_requires()
1278 hashcode_type const h = my_hash_compare.hash( key ); in __TBB_requires() local
1287 bucket_accessor b( this, h & m ); in __TBB_requires()
1314 if( this->check_mask_race(h, m) ) in __TBB_requires()
1323 if( this->check_mask_race( h, m ) ) in __TBB_requires()
1348 result->my_hash = h; in __TBB_requires()
1469 hashcode_type h = my_hash_compare.hash( key ); in __TBB_requires() local
1472 h &= m; in __TBB_requires()
1473 bucket *b = this->get_bucket( h ); in __TBB_requires()
1475 … m = ( hashcode_type(1) << tbb::detail::log2( h ) ) - 1; // get parent mask from the topmost bit in __TBB_requires()
1476 b = this->get_bucket( h &= m ); in __TBB_requires()
1481 iterator lower(*this, h, b, n), upper(lower); in __TBB_requires()
1515 hashcode_type h = my_hash_compare.hash( (*first).first ); in __TBB_requires() local
1516 bucket *b = this->get_bucket( h & m ); in __TBB_requires()
1574 hashcode_type h = my_hash_compare.hash( key ); in __TBB_requires() local
1579 bucket *b = this->get_bucket( h & m ); in __TBB_requires()
1586 … const_cast<concurrent_hash_map*>(this)->rehash_bucket( b, h & m ); //recursive rehashing in __TBB_requires()
1594 else if( this->check_mask_race( h, m ) ) in __TBB_requires()