| 353 | } |
| 354 | |
| 355 | inline size_t retire_data( hp_vector const& plist, retired_array& stg, retired_block* block, size_t block_size ) |
| 356 | { |
| 357 | auto hp_begin = plist.begin(); |
| 358 | auto hp_end = plist.end(); |
| 359 | size_t count = 0; |
| 360 | |
| 361 | for ( retired_ptr* p = block->first(), *end = p + block_size; p != end; ++p ) { |
| 362 | if ( cds_unlikely( std::binary_search( hp_begin, hp_end, p->m_p ))) |
| 363 | stg.repush( p ); |
| 364 | else { |
| 365 | p->free(); |
| 366 | ++count; |
| 367 | } |
| 368 | } |
| 369 | |
| 370 | return count; |
| 371 | } |
| 372 | |
| 373 | } // namespace |
| 374 |