MCPcopy Create free account
hub / github.com/Snapchat/KeyDB / rtree_leaf_elm_write

Function rtree_leaf_elm_write

deps/jemalloc/include/jemalloc/internal/rtree.h:294–311  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

292}
293
294static inline void
295rtree_leaf_elm_write(tsdn_t *tsdn, rtree_t *rtree,
296 rtree_leaf_elm_t *elm, extent_t *extent, szind_t szind, bool slab) {
297#ifdef RTREE_LEAF_COMPACT
298 uintptr_t bits = ((uintptr_t)szind << LG_VADDR) |
299 ((uintptr_t)extent & (((uintptr_t)0x1 << LG_VADDR) - 1)) |
300 ((uintptr_t)slab);
301 atomic_store_p(&elm->le_bits, (void *)bits, ATOMIC_RELEASE);
302#else
303 rtree_leaf_elm_slab_write(tsdn, rtree, elm, slab);
304 rtree_leaf_elm_szind_write(tsdn, rtree, elm, szind);
305 /*
306 * Write extent last, since the element is atomically considered valid
307 * as soon as the extent field is non-NULL.
308 */
309 rtree_leaf_elm_extent_write(tsdn, rtree, elm, extent);
310#endif
311}
312
313static inline void
314rtree_leaf_elm_szind_slab_update(tsdn_t *tsdn, rtree_t *rtree,

Callers 5

rtree_writeFunction · 0.70
rtree_clearFunction · 0.70
TEST_BEGINFunction · 0.50
extent_merge_implFunction · 0.50

Calls 3

Tested by 1

TEST_BEGINFunction · 0.40