mdbx: rename MDBX_CACHE_METAPTR build-time option.

This commit is contained in:
Леонид Юрьев (Leonid Yuriev) 2022-07-10 09:18:29 +03:00
parent 12d2879a9f
commit 149e708830
3 changed files with 28 additions and 31 deletions

View File

@ -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) {

View File

@ -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 */

View File

@ -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