@@ -1025,6 +1025,18 @@ extent_alloc_default(extent_hooks_t *extent_hooks, void *new_addr, size_t size,
10251025 alignment , zero , commit );
10261026}
10271027
1028+ static void
1029+ extent_hook_pre_reentrancy (tsdn_t * tsdn , arena_t * arena ) {
1030+ tsd_t * tsd = tsdn_null (tsdn ) ? tsd_fetch () : tsdn_tsd (tsdn );
1031+ pre_reentrancy (tsd , arena );
1032+ }
1033+
1034+ static void
1035+ extent_hook_post_reentrancy (tsdn_t * tsdn ) {
1036+ tsd_t * tsd = tsdn_null (tsdn ) ? tsd_fetch () : tsdn_tsd (tsdn );
1037+ post_reentrancy (tsd );
1038+ }
1039+
10281040/*
10291041 * If virtual memory is retained, create increasingly larger extents from which
10301042 * to split requested extents in order to limit the total number of disjoint
@@ -1073,12 +1085,11 @@ extent_grow_retained(tsdn_t *tsdn, arena_t *arena,
10731085 & zeroed , & committed , (dss_prec_t )atomic_load_u (
10741086 & arena -> dss_prec , ATOMIC_RELAXED ));
10751087 } else {
1076- assert (!tsdn_null (tsdn ));
1077- pre_reentrancy (tsdn_tsd (tsdn ));
1088+ extent_hook_pre_reentrancy (tsdn , arena );
10781089 ptr = (* r_extent_hooks )-> alloc (* r_extent_hooks , NULL ,
10791090 alloc_size , PAGE , & zeroed , & committed ,
10801091 arena_ind_get (arena ));
1081- post_reentrancy ( tsdn_tsd ( tsdn ) );
1092+ extent_hook_post_reentrancy ( tsdn );
10821093 }
10831094
10841095 extent_init (extent , arena , ptr , alloc_size , false, NSIZES ,
@@ -1250,11 +1261,10 @@ extent_alloc_wrapper_hard(tsdn_t *tsdn, arena_t *arena,
12501261 addr = extent_alloc_default_impl (tsdn , arena , new_addr , esize ,
12511262 alignment , zero , commit );
12521263 } else {
1253- assert (!tsdn_null (tsdn ));
1254- pre_reentrancy (tsdn_tsd (tsdn ));
1264+ extent_hook_pre_reentrancy (tsdn , arena );
12551265 addr = (* r_extent_hooks )-> alloc (* r_extent_hooks , new_addr ,
12561266 esize , alignment , zero , commit , arena_ind_get (arena ));
1257- post_reentrancy ( tsdn_tsd ( tsdn ) );
1267+ extent_hook_post_reentrancy ( tsdn );
12581268 }
12591269 if (addr == NULL ) {
12601270 extent_dalloc (tsdn , arena , extent );
@@ -1492,13 +1502,12 @@ extent_dalloc_wrapper_try(tsdn_t *tsdn, arena_t *arena,
14921502 err = extent_dalloc_default_impl (extent_base_get (extent ),
14931503 extent_size_get (extent ));
14941504 } else {
1495- assert (!tsdn_null (tsdn ));
1496- pre_reentrancy (tsdn_tsd (tsdn ));
1505+ extent_hook_pre_reentrancy (tsdn , arena );
14971506 err = ((* r_extent_hooks )-> dalloc == NULL ||
14981507 (* r_extent_hooks )-> dalloc (* r_extent_hooks ,
14991508 extent_base_get (extent ), extent_size_get (extent ),
15001509 extent_committed_get (extent ), arena_ind_get (arena )));
1501- post_reentrancy ( tsdn_tsd ( tsdn ) );
1510+ extent_hook_post_reentrancy ( tsdn );
15021511 }
15031512
15041513 if (!err ) {
@@ -1525,8 +1534,7 @@ extent_dalloc_wrapper(tsdn_t *tsdn, arena_t *arena,
15251534
15261535 extent_reregister (tsdn , extent );
15271536 if (* r_extent_hooks != & extent_hooks_default ) {
1528- assert (!tsdn_null (tsdn ));
1529- pre_reentrancy (tsdn_tsd (tsdn ));
1537+ extent_hook_pre_reentrancy (tsdn , arena );
15301538 }
15311539 /* Try to decommit; purge if that fails. */
15321540 bool zeroed ;
@@ -1550,7 +1558,7 @@ extent_dalloc_wrapper(tsdn_t *tsdn, arena_t *arena,
15501558 zeroed = false;
15511559 }
15521560 if (* r_extent_hooks != & extent_hooks_default ) {
1553- post_reentrancy ( tsdn_tsd ( tsdn ) );
1561+ extent_hook_post_reentrancy ( tsdn );
15541562 }
15551563 extent_zeroed_set (extent , zeroed );
15561564
@@ -1595,12 +1603,11 @@ extent_destroy_wrapper(tsdn_t *tsdn, arena_t *arena,
15951603 extent_destroy_default_impl (extent_base_get (extent ),
15961604 extent_size_get (extent ));
15971605 } else if ((* r_extent_hooks )-> destroy != NULL ) {
1598- assert (!tsdn_null (tsdn ));
1599- pre_reentrancy (tsdn_tsd (tsdn ));
1606+ extent_hook_pre_reentrancy (tsdn , arena );
16001607 (* r_extent_hooks )-> destroy (* r_extent_hooks ,
16011608 extent_base_get (extent ), extent_size_get (extent ),
16021609 extent_committed_get (extent ), arena_ind_get (arena ));
1603- post_reentrancy ( tsdn_tsd ( tsdn ) );
1610+ extent_hook_post_reentrancy ( tsdn );
16041611 }
16051612
16061613 extent_dalloc (tsdn , arena , extent );
@@ -1622,14 +1629,13 @@ extent_commit_impl(tsdn_t *tsdn, arena_t *arena,
16221629
16231630 extent_hooks_assure_initialized (arena , r_extent_hooks );
16241631 if (* r_extent_hooks != & extent_hooks_default ) {
1625- assert (!tsdn_null (tsdn ));
1626- pre_reentrancy (tsdn_tsd (tsdn ));
1632+ extent_hook_pre_reentrancy (tsdn , arena );
16271633 }
16281634 bool err = ((* r_extent_hooks )-> commit == NULL ||
16291635 (* r_extent_hooks )-> commit (* r_extent_hooks , extent_base_get (extent ),
16301636 extent_size_get (extent ), offset , length , arena_ind_get (arena )));
16311637 if (* r_extent_hooks != & extent_hooks_default ) {
1632- post_reentrancy ( tsdn_tsd ( tsdn ) );
1638+ extent_hook_post_reentrancy ( tsdn );
16331639 }
16341640 extent_committed_set (extent , extent_committed_get (extent ) || !err );
16351641 return err ;
@@ -1660,15 +1666,14 @@ extent_decommit_wrapper(tsdn_t *tsdn, arena_t *arena,
16601666 extent_hooks_assure_initialized (arena , r_extent_hooks );
16611667
16621668 if (* r_extent_hooks != & extent_hooks_default ) {
1663- assert (!tsdn_null (tsdn ));
1664- pre_reentrancy (tsdn_tsd (tsdn ));
1669+ extent_hook_pre_reentrancy (tsdn , arena );
16651670 }
16661671 bool err = ((* r_extent_hooks )-> decommit == NULL ||
16671672 (* r_extent_hooks )-> decommit (* r_extent_hooks ,
16681673 extent_base_get (extent ), extent_size_get (extent ), offset , length ,
16691674 arena_ind_get (arena )));
16701675 if (* r_extent_hooks != & extent_hooks_default ) {
1671- post_reentrancy ( tsdn_tsd ( tsdn ) );
1676+ extent_hook_post_reentrancy ( tsdn );
16721677 }
16731678 extent_committed_set (extent , extent_committed_get (extent ) && err );
16741679 return err ;
@@ -1700,16 +1705,14 @@ extent_purge_lazy_impl(tsdn_t *tsdn, arena_t *arena,
17001705 if ((* r_extent_hooks )-> purge_lazy == NULL ) {
17011706 return true;
17021707 }
1703-
17041708 if (* r_extent_hooks != & extent_hooks_default ) {
1705- assert (!tsdn_null (tsdn ));
1706- pre_reentrancy (tsdn_tsd (tsdn ));
1709+ extent_hook_pre_reentrancy (tsdn , arena );
17071710 }
17081711 bool err = (* r_extent_hooks )-> purge_lazy (* r_extent_hooks ,
17091712 extent_base_get (extent ), extent_size_get (extent ), offset , length ,
17101713 arena_ind_get (arena ));
17111714 if (* r_extent_hooks != & extent_hooks_default ) {
1712- post_reentrancy ( tsdn_tsd ( tsdn ) );
1715+ extent_hook_post_reentrancy ( tsdn );
17131716 }
17141717
17151718 return err ;
@@ -1750,14 +1753,13 @@ extent_purge_forced_impl(tsdn_t *tsdn, arena_t *arena,
17501753 return true;
17511754 }
17521755 if (* r_extent_hooks != & extent_hooks_default ) {
1753- assert (!tsdn_null (tsdn ));
1754- pre_reentrancy (tsdn_tsd (tsdn ));
1756+ extent_hook_pre_reentrancy (tsdn , arena );
17551757 }
17561758 bool err = (* r_extent_hooks )-> purge_forced (* r_extent_hooks ,
17571759 extent_base_get (extent ), extent_size_get (extent ), offset , length ,
17581760 arena_ind_get (arena ));
17591761 if (* r_extent_hooks != & extent_hooks_default ) {
1760- post_reentrancy ( tsdn_tsd ( tsdn ) );
1762+ extent_hook_post_reentrancy ( tsdn );
17611763 }
17621764 return err ;
17631765}
@@ -1829,14 +1831,13 @@ extent_split_impl(tsdn_t *tsdn, arena_t *arena,
18291831 extent_lock2 (tsdn , extent , trail );
18301832
18311833 if (* r_extent_hooks != & extent_hooks_default ) {
1832- assert (!tsdn_null (tsdn ));
1833- pre_reentrancy (tsdn_tsd (tsdn ));
1834+ extent_hook_pre_reentrancy (tsdn , arena );
18341835 }
18351836 bool err = (* r_extent_hooks )-> split (* r_extent_hooks , extent_base_get (extent ),
18361837 size_a + size_b , size_a , size_b , extent_committed_get (extent ),
18371838 arena_ind_get (arena ));
18381839 if (* r_extent_hooks != & extent_hooks_default ) {
1839- post_reentrancy ( tsdn_tsd ( tsdn ) );
1840+ extent_hook_post_reentrancy ( tsdn );
18401841 }
18411842 if (err ) {
18421843 goto label_error_c ;
@@ -1908,13 +1909,12 @@ extent_merge_impl(tsdn_t *tsdn, arena_t *arena,
19081909 err = extent_merge_default_impl (extent_base_get (a ),
19091910 extent_base_get (b ));
19101911 } else {
1911- assert (!tsdn_null (tsdn ));
1912- pre_reentrancy (tsdn_tsd (tsdn ));
1912+ extent_hook_pre_reentrancy (tsdn , arena );
19131913 err = (* r_extent_hooks )-> merge (* r_extent_hooks ,
19141914 extent_base_get (a ), extent_size_get (a ), extent_base_get (b ),
19151915 extent_size_get (b ), extent_committed_get (a ),
19161916 arena_ind_get (arena ));
1917- post_reentrancy ( tsdn_tsd ( tsdn ) );
1917+ extent_hook_post_reentrancy ( tsdn );
19181918 }
19191919
19201920 if (err ) {
0 commit comments