diff options
author | Qi Wang <interwq@gwu.edu> | 2018-04-05 14:37:17 -0700 |
---|---|---|
committer | Qi Wang <interwq@gmail.com> | 2018-04-10 10:18:46 -0700 |
commit | 4be74d51121e8772d356e8be088dc93f927fd709 (patch) | |
tree | 4f781c143e2c2a28cebfb4e8f37d3bb331a8b998 /include | |
parent | 5f51882a0a7d529c90bbb15ccbabb064b0a11e80 (diff) | |
download | platform_external_jemalloc_new-4be74d51121e8772d356e8be088dc93f927fd709.tar.gz platform_external_jemalloc_new-4be74d51121e8772d356e8be088dc93f927fd709.tar.bz2 platform_external_jemalloc_new-4be74d51121e8772d356e8be088dc93f927fd709.zip |
Consolidate the two memory loads in rtree_szind_slab_read().
szind and slab bits are read on fast path, where compiler generated two memory
loads separately for them before this diff. Manually operate on the bits to
avoid the extra memory load.
Diffstat (limited to 'include')
-rw-r--r-- | include/jemalloc/internal/rtree.h | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/include/jemalloc/internal/rtree.h b/include/jemalloc/internal/rtree.h index 4563db23..8ff20d72 100644 --- a/include/jemalloc/internal/rtree.h +++ b/include/jemalloc/internal/rtree.h @@ -460,8 +460,14 @@ rtree_szind_slab_read(tsdn_t *tsdn, rtree_t *rtree, rtree_ctx_t *rtree_ctx, if (!dependent && elm == NULL) { return true; } +#ifdef RTREE_LEAF_COMPACT + uintptr_t bits = rtree_leaf_elm_bits_read(tsdn, rtree, elm, dependent); + *r_szind = rtree_leaf_elm_bits_szind_get(bits); + *r_slab = rtree_leaf_elm_bits_slab_get(bits); +#else *r_szind = rtree_leaf_elm_szind_read(tsdn, rtree, elm, dependent); *r_slab = rtree_leaf_elm_slab_read(tsdn, rtree, elm, dependent); +#endif return false; } |