1*a4bd5210SJason Evans #define JEMALLOC_EXTENT_C_ 2*a4bd5210SJason Evans #include "jemalloc/internal/jemalloc_internal.h" 3*a4bd5210SJason Evans 4*a4bd5210SJason Evans /******************************************************************************/ 5*a4bd5210SJason Evans 6*a4bd5210SJason Evans static inline int 7*a4bd5210SJason Evans extent_szad_comp(extent_node_t *a, extent_node_t *b) 8*a4bd5210SJason Evans { 9*a4bd5210SJason Evans int ret; 10*a4bd5210SJason Evans size_t a_size = a->size; 11*a4bd5210SJason Evans size_t b_size = b->size; 12*a4bd5210SJason Evans 13*a4bd5210SJason Evans ret = (a_size > b_size) - (a_size < b_size); 14*a4bd5210SJason Evans if (ret == 0) { 15*a4bd5210SJason Evans uintptr_t a_addr = (uintptr_t)a->addr; 16*a4bd5210SJason Evans uintptr_t b_addr = (uintptr_t)b->addr; 17*a4bd5210SJason Evans 18*a4bd5210SJason Evans ret = (a_addr > b_addr) - (a_addr < b_addr); 19*a4bd5210SJason Evans } 20*a4bd5210SJason Evans 21*a4bd5210SJason Evans return (ret); 22*a4bd5210SJason Evans } 23*a4bd5210SJason Evans 24*a4bd5210SJason Evans /* Generate red-black tree functions. */ 25*a4bd5210SJason Evans rb_gen(, extent_tree_szad_, extent_tree_t, extent_node_t, link_szad, 26*a4bd5210SJason Evans extent_szad_comp) 27*a4bd5210SJason Evans 28*a4bd5210SJason Evans static inline int 29*a4bd5210SJason Evans extent_ad_comp(extent_node_t *a, extent_node_t *b) 30*a4bd5210SJason Evans { 31*a4bd5210SJason Evans uintptr_t a_addr = (uintptr_t)a->addr; 32*a4bd5210SJason Evans uintptr_t b_addr = (uintptr_t)b->addr; 33*a4bd5210SJason Evans 34*a4bd5210SJason Evans return ((a_addr > b_addr) - (a_addr < b_addr)); 35*a4bd5210SJason Evans } 36*a4bd5210SJason Evans 37*a4bd5210SJason Evans /* Generate red-black tree functions. */ 38*a4bd5210SJason Evans rb_gen(, extent_tree_ad_, extent_tree_t, extent_node_t, link_ad, 39*a4bd5210SJason Evans extent_ad_comp) 40