Cache bin: Add an emptiness assertion.

This commit is contained in:
David Goldblatt 2020-03-02 18:14:19 -08:00 committed by David Goldblatt
parent 6a7aa46ef7
commit d498a4bb08
2 changed files with 8 additions and 3 deletions

View File

@ -146,6 +146,13 @@ cache_bin_empty_position_get(cache_bin_t *bin, cache_bin_info_t *info) {
return ret;
}
static inline void
cache_bin_assert_empty(cache_bin_t *bin, cache_bin_info_t *info) {
assert(cache_bin_ncached_get(bin, info) == 0);
assert(cache_bin_empty_position_get(bin, info) == bin->cur_ptr.ptr);
}
/* Returns the numeric value of low water in [0, ncached]. */
static inline cache_bin_sz_t
cache_bin_low_water_get(cache_bin_t *bin, cache_bin_info_t *info) {

View File

@ -566,9 +566,7 @@ tcache_destroy(tsd_t *tsd, tcache_t *tcache, bool tsd_tcache) {
if (tsd_tcache) {
/* Release the avail array for the TSD embedded auto tcache. */
cache_bin_t *bin = tcache_small_bin_get(tcache, 0);
assert(cache_bin_ncached_get(bin, &tcache_bin_info[0]) == 0);
assert(cache_bin_empty_position_get(bin, &tcache_bin_info[0]) ==
bin->cur_ptr.ptr);
cache_bin_assert_empty(bin, &tcache_bin_info[0]);
void *avail_array = (void *)((uintptr_t)bin->cur_ptr.ptr -
tcache_bin_info[0].stack_size);
idalloctm(tsd_tsdn(tsd), avail_array, NULL, NULL, true, true);