| 1577 | } |
| 1578 | |
| 1579 | static bool |
| 1580 | extent_coalesce(tsdn_t *tsdn, arena_t *arena, extent_hooks_t **r_extent_hooks, |
| 1581 | extents_t *extents, extent_t *inner, extent_t *outer, bool forward, |
| 1582 | bool growing_retained) { |
| 1583 | assert(extent_can_coalesce(arena, extents, inner, outer)); |
| 1584 | |
| 1585 | extent_activate_locked(tsdn, arena, extents, outer); |
| 1586 | |
| 1587 | malloc_mutex_unlock(tsdn, &extents->mtx); |
| 1588 | bool err = extent_merge_impl(tsdn, arena, r_extent_hooks, |
| 1589 | forward ? inner : outer, forward ? outer : inner, growing_retained); |
| 1590 | malloc_mutex_lock(tsdn, &extents->mtx); |
| 1591 | |
| 1592 | if (err) { |
| 1593 | extent_deactivate_locked(tsdn, arena, extents, outer); |
| 1594 | } |
| 1595 | |
| 1596 | return err; |
| 1597 | } |
| 1598 | |
| 1599 | static extent_t * |
| 1600 | extent_try_coalesce_impl(tsdn_t *tsdn, arena_t *arena, |
no test coverage detected