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

Function rtree_delete_subtree

deps/jemalloc/src/rtree.c:62–90  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

60#ifdef JEMALLOC_JET
61# if RTREE_HEIGHT > 1
62static void
63rtree_delete_subtree(tsdn_t *tsdn, rtree_t *rtree, rtree_node_elm_t *subtree,
64 unsigned level) {
65 size_t nchildren = ZU(1) << rtree_levels[level].bits;
66 if (level + 2 < RTREE_HEIGHT) {
67 for (size_t i = 0; i < nchildren; i++) {
68 rtree_node_elm_t *node =
69 (rtree_node_elm_t *)atomic_load_p(&subtree[i].child,
70 ATOMIC_RELAXED);
71 if (node != NULL) {
72 rtree_delete_subtree(tsdn, rtree, node, level +
73 1);
74 }
75 }
76 } else {
77 for (size_t i = 0; i < nchildren; i++) {
78 rtree_leaf_elm_t *leaf =
79 (rtree_leaf_elm_t *)atomic_load_p(&subtree[i].child,
80 ATOMIC_RELAXED);
81 if (leaf != NULL) {
82 rtree_leaf_dalloc(tsdn, rtree, leaf);
83 }
84 }
85 }
86
87 if (subtree != rtree->root) {
88 rtree_node_dalloc(tsdn, rtree, subtree);
89 }
90}
91# endif
92
93void

Callers 1

rtree_deleteFunction · 0.70

Calls

no outgoing calls

Tested by

no test coverage detected