| 85 | } |
| 86 | |
| 87 | butil::atomic<T>* get(size_t index) const { |
| 88 | const size_t block_index = index / BLOCK_SIZE; |
| 89 | if (__builtin_expect(block_index < NBLOCK, 1)) { |
| 90 | const size_t block_offset = index - block_index * BLOCK_SIZE; |
| 91 | Block* const b = _blocks[block_index].load(butil::memory_order_consume); |
| 92 | if (__builtin_expect(b != NULL, 1)) { |
| 93 | return b->items + block_offset; |
| 94 | } |
| 95 | } |
| 96 | return NULL; |
| 97 | } |
| 98 | |
| 99 | private: |
| 100 | butil::atomic<Block*> _blocks[NBLOCK]; |
no test coverage detected