From 149e708830da5b6c84f330c0c4a7679bc9908bb1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9B=D0=B5=D0=BE=D0=BD=D0=B8=D0=B4=20=D0=AE=D1=80=D1=8C?= =?UTF-8?q?=D0=B5=D0=B2=20=28Leonid=20Yuriev=29?= Date: Sun, 10 Jul 2022 09:18:29 +0300 Subject: [PATCH] mdbx: rename `MDBX_CACHE_METAPTR` build-time option. --- src/core.c | 45 +++++++++++++++++++++------------------------ src/internals.h | 4 ++-- src/options.h | 10 +++++----- 3 files changed, 28 insertions(+), 31 deletions(-) diff --git a/src/core.c b/src/core.c index d950402f..078ac313 100644 --- a/src/core.c +++ b/src/core.c @@ -5743,12 +5743,12 @@ constmeta_txnid(const MDBX_env *env, const MDBX_meta *meta) { } static __inline void meta_cache_clear(MDBX_env *env) { -#if MDBX_CACHE_METAS +#if MDBX_CACHE_METAPTR env->cache_last_meta = nullptr; env->cache_steady_meta = nullptr; #else (void)env; -#endif /* MDBX_CACHE_METAS */ +#endif /* MDBX_CACHE_METAPTR */ } static __inline txnid_t meta_txnid(const MDBX_env *env, @@ -5888,44 +5888,41 @@ meta_mostrecent(const enum meta_choise_mode mode, const MDBX_env *env) { static volatile const MDBX_meta *meta_prefer_steady(const MDBX_env *env) { return -#if MDBX_CACHE_METAS +#if MDBX_CACHE_METAPTR ((MDBX_env *)env)->cache_steady_meta = -#endif /* MDBX_CACHE_METAS */ +#endif /* MDBX_CACHE_METAPTR */ meta_mostrecent(prefer_steady, env); } MDBX_NOTHROW_PURE_FUNCTION static const MDBX_meta * constmeta_prefer_steady(const MDBX_env *env) { -#if MDBX_CACHE_METAS - mdbx_assert(env, !env->cache_steady_meta || - env->cache_steady_meta == - meta_mostrecent(prefer_steady, env)); - return (const MDBX_meta *)(env->cache_steady_meta ? env->cache_steady_meta : -#else - return (const MDBX_meta *)( -#endif /* MDBX_CACHE_METAS */ - meta_prefer_steady(env)); +#if MDBX_CACHE_METAPTR + if (likely(env->cache_steady_meta)) { + mdbx_assert(env, + env->cache_steady_meta == meta_mostrecent(prefer_steady, env)); + return (const MDBX_meta *)env->cache_steady_meta; + } +#endif /* MDBX_CACHE_METAPTR */ + return (const MDBX_meta *)meta_prefer_steady(env); } static volatile const MDBX_meta *meta_prefer_last(const MDBX_env *env) { return -#if MDBX_CACHE_METAS +#if MDBX_CACHE_METAPTR ((MDBX_env *)env)->cache_last_meta = -#endif /* MDBX_CACHE_METAS */ +#endif /* MDBX_CACHE_METAPTR */ meta_mostrecent(prefer_last, env); } MDBX_NOTHROW_PURE_FUNCTION static const MDBX_meta * constmeta_prefer_last(const MDBX_env *env) { -#if MDBX_CACHE_METAS - mdbx_assert(env, - !env->cache_last_meta || - env->cache_last_meta == meta_mostrecent(prefer_last, env)); - return (const MDBX_meta *)(env->cache_last_meta ? env->cache_last_meta : -#else - return (const MDBX_meta *)( -#endif /* MDBX_CACHE_METAS */ - meta_prefer_last(env)); +#if MDBX_CACHE_METAPTR + if (likely(env->cache_last_meta)) { + mdbx_assert(env, env->cache_last_meta == meta_mostrecent(prefer_last, env)); + return (const MDBX_meta *)env->cache_last_meta; + } +#endif /* MDBX_CACHE_METAPTR */ + return (const MDBX_meta *)meta_prefer_last(env); } static txnid_t mdbx_recent_committed_txnid(const MDBX_env *env) { diff --git a/src/internals.h b/src/internals.h index 8cd0f329..cf6a5f33 100644 --- a/src/internals.h +++ b/src/internals.h @@ -1189,10 +1189,10 @@ struct MDBX_env { MDBX_txn *me_txn; /* current write transaction */ mdbx_fastmutex_t me_dbi_lock; -#if MDBX_CACHE_METAS +#if MDBX_CACHE_METAPTR volatile const MDBX_meta *cache_last_meta; volatile const MDBX_meta *cache_steady_meta; -#endif /* MDBX_CACHE_METAS */ +#endif /* MDBX_CACHE_METAPTR */ MDBX_dbi me_numdbs; /* number of DBs opened */ MDBX_page *me_dp_reserve; /* list of malloc'ed blocks for re-use */ diff --git a/src/options.h b/src/options.h index 7bf26f1e..b4559f3a 100644 --- a/src/options.h +++ b/src/options.h @@ -92,11 +92,11 @@ #error MDBX_ENABLE_BIGFOOT must be defined as 0 or 1 #endif /* MDBX_ENABLE_BIGFOOT */ -#ifndef MDBX_CACHE_METAS -#define MDBX_CACHE_METAS 0 -#elif !(MDBX_CACHE_METAS == 0 || MDBX_CACHE_METAS == 1) -#error MDBX_CACHE_METAS must be defined as 0 or 1 -#endif /* MDBX_CACHE_METAS */ +#ifndef MDBX_CACHE_METAPTR +#define MDBX_CACHE_METAPTR 0 +#elif !(MDBX_CACHE_METAPTR == 0 || MDBX_CACHE_METAPTR == 1) +#error MDBX_CACHE_METAPTR must be defined as 0 or 1 +#endif /* MDBX_CACHE_METAPTR */ /** Controls use of POSIX madvise() hints and friends. */ #ifndef MDBX_ENABLE_MADVISE