Remove the leafkey NULL check in leaf_elm_lookup.
This commit is contained in:
parent
9ed84b0d45
commit
51d3682950
@ -324,19 +324,15 @@ rtree_leaf_elm_lookup(tsdn_t *tsdn, rtree_t *rtree, rtree_ctx_t *rtree_ctx,
|
|||||||
#define RTREE_CACHE_CHECK(i) do { \
|
#define RTREE_CACHE_CHECK(i) do { \
|
||||||
if (likely(rtree_ctx->cache[i].leafkey == leafkey)) { \
|
if (likely(rtree_ctx->cache[i].leafkey == leafkey)) { \
|
||||||
rtree_leaf_elm_t *leaf = rtree_ctx->cache[i].leaf; \
|
rtree_leaf_elm_t *leaf = rtree_ctx->cache[i].leaf; \
|
||||||
if (likely(leaf != NULL)) { \
|
assert(leaf != NULL); \
|
||||||
|
if (i > 0) { \
|
||||||
/* Bubble up by one. */ \
|
/* Bubble up by one. */ \
|
||||||
if (i > 0) { \
|
rtree_ctx->cache[i] = rtree_ctx->cache[i - 1]; \
|
||||||
rtree_ctx->cache[i] = \
|
rtree_ctx->cache[i - 1].leafkey = leafkey; \
|
||||||
rtree_ctx->cache[i - 1]; \
|
rtree_ctx->cache[i - 1].leaf = leaf; \
|
||||||
rtree_ctx->cache[i - 1].leafkey = \
|
|
||||||
leafkey; \
|
|
||||||
rtree_ctx->cache[i - 1].leaf = leaf; \
|
|
||||||
} \
|
|
||||||
uintptr_t subkey = rtree_subkey(key, \
|
|
||||||
RTREE_HEIGHT-1); \
|
|
||||||
return &leaf[subkey]; \
|
|
||||||
} \
|
} \
|
||||||
|
uintptr_t subkey = rtree_subkey(key, RTREE_HEIGHT-1); \
|
||||||
|
return &leaf[subkey]; \
|
||||||
} \
|
} \
|
||||||
} while (0)
|
} while (0)
|
||||||
/* Check the first cache entry. */
|
/* Check the first cache entry. */
|
||||||
|
@ -39,7 +39,7 @@ typedef struct rtree_s rtree_t;
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Needed for initialization only. */
|
/* Needed for initialization only. */
|
||||||
#define RTREE_LEAFKEY_INVALID ((uintptr_t)1)
|
#define RTREE_LEAFKEY_INVALID ((uintptr_t)1)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Number of leafkey/leaf pairs to cache. Each entry supports an entire leaf,
|
* Number of leafkey/leaf pairs to cache. Each entry supports an entire leaf,
|
||||||
@ -54,7 +54,7 @@ typedef struct rtree_s rtree_t;
|
|||||||
* the tree nodes, and the cache will itself suffer cache misses if made overly
|
* the tree nodes, and the cache will itself suffer cache misses if made overly
|
||||||
* large, not to mention the cost of linear search.
|
* large, not to mention the cost of linear search.
|
||||||
*/
|
*/
|
||||||
#define RTREE_CTX_NCACHE 8
|
#define RTREE_CTX_NCACHE 8
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Zero initializer required for tsd initialization only. Proper initialization
|
* Zero initializer required for tsd initialization only. Proper initialization
|
||||||
@ -68,7 +68,7 @@ typedef struct rtree_s rtree_t;
|
|||||||
* would have a witness_t directly embedded, but that would dramatically bloat
|
* would have a witness_t directly embedded, but that would dramatically bloat
|
||||||
* the tree. This must contain enough entries to e.g. coalesce two extents.
|
* the tree. This must contain enough entries to e.g. coalesce two extents.
|
||||||
*/
|
*/
|
||||||
#define RTREE_ELM_ACQUIRE_MAX 4
|
#define RTREE_ELM_ACQUIRE_MAX 4
|
||||||
|
|
||||||
/* Initializers for rtree_leaf_elm_witness_tsd_t. */
|
/* Initializers for rtree_leaf_elm_witness_tsd_t. */
|
||||||
#define RTREE_ELM_WITNESS_INITIALIZER { \
|
#define RTREE_ELM_WITNESS_INITIALIZER { \
|
||||||
|
Loading…
Reference in New Issue
Block a user