From e90613a98c39cc7f1c89d258c162c7d35c8c9e67 Mon Sep 17 00:00:00 2001 From: Leo Yuriev Date: Sun, 13 Mar 2016 19:30:15 +0300 Subject: [PATCH] mdbx: more __inline/__hot. Change-Id: I9a0971a6978c958c6d5e9ed2066630f2876f988f --- mdb.c | 41 +++++++++++++++++++++++------------------ midl.c | 12 ++++++++---- 2 files changed, 31 insertions(+), 22 deletions(-) diff --git a/mdb.c b/mdb.c index d10b181c..34dcacf1 100644 --- a/mdb.c +++ b/mdb.c @@ -1286,7 +1286,7 @@ mdb_debug_log(int type, const char *function, int line, mdb_assert((txn)->mt_env, expr) /** Return the page number of \b mp which may be sub-page, for debug output */ -static pgno_t +static __inline pgno_t mdb_dbg_pgno(MDB_page *mp) { pgno_t ret; @@ -1536,7 +1536,7 @@ mdb_page_malloc(MDB_txn *txn, unsigned num) * Saves single pages to a list, for future reuse. * (This is not used for multi-page overflow pages.) */ -static void +static __inline void mdb_page_free(MDB_env *env, MDB_page *mp) { mp->mp_next = env->me_dpages; @@ -1571,7 +1571,7 @@ mdb_dlist_free(MDB_txn *txn) dl[0].mid = 0; } -__cold static void +static void __cold mdb_kill_page(MDB_env *env, MDB_page *mp) { const unsigned off = offsetof(MDB_page, mp_pb); @@ -1853,7 +1853,8 @@ bailout: return rc; } -static uint64_t mdb_meta_sign(MDB_meta *meta) { +static __inline uint64_t +mdb_meta_sign(MDB_meta *meta) { uint64_t sign = MDB_DATASIGN_NONE; #if 0 /* TODO */ sign = hippeus_hash64( @@ -1866,7 +1867,8 @@ static uint64_t mdb_meta_sign(MDB_meta *meta) { return (sign > MDB_DATASIGN_WEAK) ? sign : ~sign; } -static MDB_meta* mdb_meta_head_w(MDB_env *env) { +static __inline MDB_meta* +mdb_meta_head_w(MDB_env *env) { MDB_meta* a = METAPAGE_1(env); MDB_meta* b = METAPAGE_2(env); txnid_t head_txnid = env->me_txns->mti_txnid; @@ -1924,11 +1926,13 @@ mdb_meta_head_r(MDB_env *env) { return h; } -static MDB_meta* mdb_env_meta_flipflop(const MDB_env *env, MDB_meta* meta) { +static __inline MDB_meta* +mdb_env_meta_flipflop(const MDB_env *env, MDB_meta* meta) { return (meta == METAPAGE_1(env)) ? METAPAGE_2(env) : METAPAGE_1(env); } -static int mdb_meta_lt(MDB_meta* a, MDB_meta* b) { +static __inline int +mdb_meta_lt(MDB_meta* a, MDB_meta* b) { return (META_IS_STEADY(a) == META_IS_STEADY(b)) ? a->mm_txnid < b->mm_txnid : META_IS_STEADY(b); } @@ -3262,7 +3266,7 @@ mdb_txn_abort(MDB_txn *txn) return mdb_txn_end(txn, MDB_END_ABORT|MDB_END_SLOT|MDB_END_FREE); } -static int +static __inline int mdb_backlog_size(MDB_txn *txn) { int reclaimed = txn->mt_env->me_pghead ? txn->mt_env->me_pghead[0] : 0; @@ -5115,7 +5119,7 @@ mdb_env_close(MDB_env *env) } /** Compare two items pointing at aligned unsigned int's. */ -static long +static long __hot mdb_cmp_int_ai(const MDB_val *a, const MDB_val *b) { mdb_assert(NULL, a->mv_size == b->mv_size); @@ -5130,7 +5134,7 @@ mdb_cmp_int_ai(const MDB_val *a, const MDB_val *b) } /** Compare two items pointing at 2-byte aligned unsigned int's. */ -static long +static long __hot mdb_cmp_int_a2(const MDB_val *a, const MDB_val *b) { mdb_assert(NULL, a->mv_size == b->mv_size); @@ -5173,7 +5177,7 @@ mdb_cmp_int_a2(const MDB_val *a, const MDB_val *b) * * This is also set as #MDB_INTEGERDUP|#MDB_DUPFIXED's #MDB_dbx.%md_dcmp. */ -static long +static long __hot mdb_cmp_int_ua(const MDB_val *a, const MDB_val *b) { mdb_assert(NULL, a->mv_size == b->mv_size); @@ -5207,7 +5211,7 @@ mdb_cmp_int_ua(const MDB_val *a, const MDB_val *b) } /** Compare two items lexically */ -static long +static long __hot mdb_cmp_memn(const MDB_val *a, const MDB_val *b) { long diff; @@ -5226,7 +5230,7 @@ mdb_cmp_memn(const MDB_val *a, const MDB_val *b) } /** Compare two items in reverse byte order */ -static long +static long __hot mdb_cmp_memnr(const MDB_val *a, const MDB_val *b) { const unsigned char *p1, *p2, *p1_lim; @@ -5258,7 +5262,7 @@ mdb_cmp_memnr(const MDB_val *a, const MDB_val *b) * Updates the cursor index with the index of the found entry. * If no entry larger or equal to the key is found, returns NULL. */ -static MDB_node * +static MDB_node * __hot mdb_node_search(MDB_cursor *mc, MDB_val *key, int *exactp) { unsigned i = 0, nkeys; @@ -5717,7 +5721,7 @@ release: * @param[out] data Updated to point to the node's data. * @return 0 on success, non-zero on failure. */ -static int +static __inline int mdb_node_read(MDB_txn *txn, MDB_node *leaf, MDB_val *data) { MDB_page *omp; /* overflow page */ @@ -7210,7 +7214,7 @@ mdb_page_new(MDB_cursor *mc, uint32_t flags, int num, MDB_page **mp) * @param[in] data The data for the node. * @return The number of bytes needed to store the node. */ -static size_t +static __inline size_t mdb_leaf_size(MDB_env *env, MDB_val *key, MDB_val *data) { size_t sz; @@ -7234,7 +7238,7 @@ mdb_leaf_size(MDB_env *env, MDB_val *key, MDB_val *data) * @param[in] key The key for the node. * @return The number of bytes needed to store the node. */ -static size_t +static __inline size_t mdb_branch_size(MDB_env *env, MDB_val *key) { size_t sz; @@ -9682,7 +9686,8 @@ mdb_env_stat(MDB_env *env, MDB_stat *arg) #if ! MDBX_MODE_ENABLED static #endif /* ! MDBX_MODE_ENABLED */ -int __cold mdbx_env_info(MDB_env *env, MDBX_envinfo *arg, size_t bytes) +int __cold +mdbx_env_info(MDB_env *env, MDBX_envinfo *arg, size_t bytes) { MDB_meta *meta; diff --git a/midl.c b/midl.c index da46cc8d..5156d7a1 100644 --- a/midl.c +++ b/midl.c @@ -30,7 +30,8 @@ */ #define CMP(x,y) ( (x) < (y) ? -1 : (x) > (y) ) -static unsigned mdb_midl_search( MDB_IDL ids, MDB_ID id ) +static unsigned __hot +mdb_midl_search( MDB_IDL ids, MDB_ID id ) { /* * binary search of id in ids @@ -197,7 +198,8 @@ static int mdb_midl_append_range( MDB_IDL *idp, MDB_ID id, unsigned n ) return 0; } -static void mdb_midl_xmerge( MDB_IDL idl, MDB_IDL merge ) +static void __hot +mdb_midl_xmerge( MDB_IDL idl, MDB_IDL merge ) { MDB_ID old_id, merge_id, i = merge[0], j = idl[0], k = i+j, total = k; idl[0] = (MDB_ID)-1; /* delimiter for idl scan below */ @@ -216,7 +218,8 @@ static void mdb_midl_xmerge( MDB_IDL idl, MDB_IDL merge ) #define SMALL 8 #define MIDL_SWAP(a,b) { itmp=(a); (a)=(b); (b)=itmp; } -static void mdb_midl_sort( MDB_IDL ids ) +static void __hot +mdb_midl_sort( MDB_IDL ids ) { /* Max possible depth of int-indexed tree * 2 items/level */ int istack[sizeof(int)*CHAR_BIT * 2]; @@ -276,7 +279,8 @@ static void mdb_midl_sort( MDB_IDL ids ) } } -static unsigned mdb_mid2l_search( MDB_ID2L ids, MDB_ID id ) +static unsigned __hot +mdb_mid2l_search( MDB_ID2L ids, MDB_ID id ) { /* * binary search of id in ids