Pull out edata_t caching into its own module.

This commit is contained in:
David Goldblatt 2019-12-11 11:17:19 -08:00 committed by David Goldblatt
parent a7862df616
commit 7859184179
12 changed files with 106 additions and 60 deletions

View file

@ -123,7 +123,7 @@ extent_alloc_dss(tsdn_t *tsdn, arena_t *arena, void *new_addr, size_t size,
return NULL;
}
gap = extent_alloc(tsdn, arena);
gap = edata_cache_get(tsdn, &arena->edata_cache, arena->base);
if (gap == NULL) {
return NULL;
}
@ -188,7 +188,8 @@ extent_alloc_dss(tsdn_t *tsdn, arena_t *arena, void *new_addr, size_t size,
if (gap_size_page != 0) {
extent_dalloc_gap(tsdn, arena, gap);
} else {
extent_dalloc(tsdn, arena, gap);
edata_cache_put(tsdn,
&arena->edata_cache, gap);
}
if (!*commit) {
*commit = pages_decommit(ret, size);
@ -224,7 +225,7 @@ extent_alloc_dss(tsdn_t *tsdn, arena_t *arena, void *new_addr, size_t size,
}
label_oom:
extent_dss_extending_finish();
extent_dalloc(tsdn, arena, gap);
edata_cache_put(tsdn, &arena->edata_cache, gap);
return NULL;
}