MCPcopy Create free account
hub / github.com/F-Stack/f-stack / extent_dalloc_wrapper

Function extent_dalloc_wrapper

app/redis-6.2.6/deps/jemalloc/src/extent.c:1702–1754  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1700}
1701
1702void
1703extent_dalloc_wrapper(tsdn_t *tsdn, arena_t *arena,
1704 extent_hooks_t **r_extent_hooks, extent_t *extent) {
1705 assert(extent_dumpable_get(extent));
1706 witness_assert_depth_to_rank(tsdn_witness_tsdp_get(tsdn),
1707 WITNESS_RANK_CORE, 0);
1708
1709 /*
1710 * Deregister first to avoid a race with other allocating threads, and
1711 * reregister if deallocation fails.
1712 */
1713 extent_deregister(tsdn, extent);
1714 if (!extent_dalloc_wrapper_try(tsdn, arena, r_extent_hooks, extent)) {
1715 return;
1716 }
1717
1718 extent_reregister(tsdn, extent);
1719 if (*r_extent_hooks != &extent_hooks_default) {
1720 extent_hook_pre_reentrancy(tsdn, arena);
1721 }
1722 /* Try to decommit; purge if that fails. */
1723 bool zeroed;
1724 if (!extent_committed_get(extent)) {
1725 zeroed = true;
1726 } else if (!extent_decommit_wrapper(tsdn, arena, r_extent_hooks, extent,
1727 0, extent_size_get(extent))) {
1728 zeroed = true;
1729 } else if ((*r_extent_hooks)->purge_forced != NULL &&
1730 !(*r_extent_hooks)->purge_forced(*r_extent_hooks,
1731 extent_base_get(extent), extent_size_get(extent), 0,
1732 extent_size_get(extent), arena_ind_get(arena))) {
1733 zeroed = true;
1734 } else if (extent_state_get(extent) == extent_state_muzzy ||
1735 ((*r_extent_hooks)->purge_lazy != NULL &&
1736 !(*r_extent_hooks)->purge_lazy(*r_extent_hooks,
1737 extent_base_get(extent), extent_size_get(extent), 0,
1738 extent_size_get(extent), arena_ind_get(arena)))) {
1739 zeroed = false;
1740 } else {
1741 zeroed = false;
1742 }
1743 if (*r_extent_hooks != &extent_hooks_default) {
1744 extent_hook_post_reentrancy(tsdn);
1745 }
1746 extent_zeroed_set(extent, zeroed);
1747
1748 if (config_prof) {
1749 extent_gdump_sub(tsdn, extent);
1750 }
1751
1752 extent_record(tsdn, arena, r_extent_hooks, &arena->extents_retained,
1753 extent, false);
1754}
1755
1756static void
1757extent_destroy_default_impl(void *addr, size_t size) {

Callers 3

extent_dalloc_gapFunction · 0.85
arena_decay_stashedFunction · 0.85

Calls 15

extent_dumpable_getFunction · 0.85
extent_deregisterFunction · 0.85
extent_reregisterFunction · 0.85
extent_committed_getFunction · 0.85
extent_decommit_wrapperFunction · 0.85
extent_size_getFunction · 0.85
extent_base_getFunction · 0.85
arena_ind_getFunction · 0.85
extent_state_getFunction · 0.85

Tested by

no test coverage detected