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

Function extent_register_impl

deps/jemalloc/src/extent.c:780–812  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

778}
779
780static bool
781extent_register_impl(tsdn_t *tsdn, extent_t *extent, bool gdump_add) {
782 rtree_ctx_t rtree_ctx_fallback;
783 rtree_ctx_t *rtree_ctx = tsdn_rtree_ctx(tsdn, &rtree_ctx_fallback);
784 rtree_leaf_elm_t *elm_a, *elm_b;
785
786 /*
787 * We need to hold the lock to protect against a concurrent coalesce
788 * operation that sees us in a partial state.
789 */
790 extent_lock(tsdn, extent);
791
792 if (extent_rtree_leaf_elms_lookup(tsdn, rtree_ctx, extent, false, true,
793 &elm_a, &elm_b)) {
794 extent_unlock(tsdn, extent);
795 return true;
796 }
797
798 szind_t szind = extent_szind_get_maybe_invalid(extent);
799 bool slab = extent_slab_get(extent);
800 extent_rtree_write_acquired(tsdn, elm_a, elm_b, extent, szind, slab);
801 if (slab) {
802 extent_interior_register(tsdn, rtree_ctx, extent, szind);
803 }
804
805 extent_unlock(tsdn, extent);
806
807 if (config_prof && gdump_add) {
808 extent_gdump_add(tsdn, extent);
809 }
810
811 return false;
812}
813
814static bool
815extent_register(tsdn_t *tsdn, extent_t *extent) {

Callers 2

extent_registerFunction · 0.70

Calls 8

extent_interior_registerFunction · 0.70
extent_gdump_addFunction · 0.70
extent_lockFunction · 0.50
extent_unlockFunction · 0.50
extent_slab_getFunction · 0.50

Tested by

no test coverage detected