| 175 | // Use bit scan forward to quickly find the first zero bit if it is available |
| 176 | |
| 177 | static inline size_t mi_slice_bin8(size_t slice_count) { |
| 178 | if (slice_count<=1) return slice_count; |
| 179 | mi_assert_internal(slice_count <= MI_SLICES_PER_SEGMENT); |
| 180 | slice_count--; |
| 181 | size_t s = mi_bsr(slice_count); // slice_count > 1 |
| 182 | if (s <= 2) return slice_count + 1; |
| 183 | size_t bin = ((s << 2) | ((slice_count >> (s - 2))&0x03)) - 4; |
| 184 | return bin; |
| 185 | } |
| 186 | |
| 187 | static inline size_t mi_slice_bin(size_t slice_count) { |
| 188 | mi_assert_internal(slice_count*MI_SEGMENT_SLICE_SIZE <= MI_SEGMENT_SIZE); |
no test coverage detected