Change lg_floor() return type from size_t to unsigned.

This commit is contained in:
Jason Evans 2016-02-24 11:04:51 -08:00
parent 0931cecbfa
commit 1c42a04cc6
2 changed files with 18 additions and 17 deletions

View File

@ -555,27 +555,27 @@ size2index_compute(size_t size)
#if (NTBINS != 0) #if (NTBINS != 0)
if (size <= (ZU(1) << LG_TINY_MAXCLASS)) { if (size <= (ZU(1) << LG_TINY_MAXCLASS)) {
size_t lg_tmin = LG_TINY_MAXCLASS - NTBINS + 1; szind_t lg_tmin = LG_TINY_MAXCLASS - NTBINS + 1;
size_t lg_ceil = lg_floor(pow2_ceil_zu(size)); szind_t lg_ceil = lg_floor(pow2_ceil_zu(size));
return (lg_ceil < lg_tmin ? 0 : lg_ceil - lg_tmin); return (lg_ceil < lg_tmin ? 0 : lg_ceil - lg_tmin);
} }
#endif #endif
{ {
size_t x = unlikely(ZI(size) < 0) ? ((size<<1) ? szind_t x = unlikely(ZI(size) < 0) ? ((size<<1) ?
(ZU(1)<<(LG_SIZEOF_PTR+3)) : ((ZU(1)<<(LG_SIZEOF_PTR+3))-1)) (ZU(1)<<(LG_SIZEOF_PTR+3)) : ((ZU(1)<<(LG_SIZEOF_PTR+3))-1))
: lg_floor((size<<1)-1); : lg_floor((size<<1)-1);
size_t shift = (x < LG_SIZE_CLASS_GROUP + LG_QUANTUM) ? 0 : szind_t shift = (x < LG_SIZE_CLASS_GROUP + LG_QUANTUM) ? 0 :
x - (LG_SIZE_CLASS_GROUP + LG_QUANTUM); x - (LG_SIZE_CLASS_GROUP + LG_QUANTUM);
size_t grp = shift << LG_SIZE_CLASS_GROUP; szind_t grp = shift << LG_SIZE_CLASS_GROUP;
size_t lg_delta = (x < LG_SIZE_CLASS_GROUP + LG_QUANTUM + 1) szind_t lg_delta = (x < LG_SIZE_CLASS_GROUP + LG_QUANTUM + 1)
? LG_QUANTUM : x - LG_SIZE_CLASS_GROUP - 1; ? LG_QUANTUM : x - LG_SIZE_CLASS_GROUP - 1;
size_t delta_inverse_mask = ZI(-1) << lg_delta; size_t delta_inverse_mask = ZI(-1) << lg_delta;
size_t mod = ((((size-1) & delta_inverse_mask) >> lg_delta)) & szind_t mod = ((((size-1) & delta_inverse_mask) >> lg_delta)) &
((ZU(1) << LG_SIZE_CLASS_GROUP) - 1); ((ZU(1) << LG_SIZE_CLASS_GROUP) - 1);
size_t index = NTBINS + grp + mod; szind_t index = NTBINS + grp + mod;
return (index); return (index);
} }
} }
@ -586,8 +586,7 @@ size2index_lookup(size_t size)
assert(size <= LOOKUP_MAXCLASS); assert(size <= LOOKUP_MAXCLASS);
{ {
size_t ret = ((size_t)(size2index_tab[(size-1) >> szind_t ret = (size2index_tab[(size-1) >> LG_TINY_MIN]);
LG_TINY_MIN]));
assert(ret == size2index_compute(size)); assert(ret == size2index_compute(size));
return (ret); return (ret);
} }

View File

@ -130,7 +130,7 @@ unsigned ffs_u32(uint32_t bitmap);
uint64_t pow2_ceil_u64(uint64_t x); uint64_t pow2_ceil_u64(uint64_t x);
uint32_t pow2_ceil_u32(uint32_t x); uint32_t pow2_ceil_u32(uint32_t x);
size_t pow2_ceil_zu(size_t x); size_t pow2_ceil_zu(size_t x);
size_t lg_floor(size_t x); unsigned lg_floor(size_t x);
void set_errno(int errnum); void set_errno(int errnum);
int get_errno(void); int get_errno(void);
#endif #endif
@ -244,7 +244,7 @@ pow2_ceil_zu(size_t x)
} }
#if (defined(__i386__) || defined(__amd64__) || defined(__x86_64__)) #if (defined(__i386__) || defined(__amd64__) || defined(__x86_64__))
JEMALLOC_INLINE size_t JEMALLOC_INLINE unsigned
lg_floor(size_t x) lg_floor(size_t x)
{ {
size_t ret; size_t ret;
@ -255,10 +255,11 @@ lg_floor(size_t x)
: "=r"(ret) // Outputs. : "=r"(ret) // Outputs.
: "r"(x) // Inputs. : "r"(x) // Inputs.
); );
return (ret); assert(ret < UINT_MAX);
return ((unsigned)ret);
} }
#elif (defined(_MSC_VER)) #elif (defined(_MSC_VER))
JEMALLOC_INLINE size_t JEMALLOC_INLINE unsigned
lg_floor(size_t x) lg_floor(size_t x)
{ {
unsigned long ret; unsigned long ret;
@ -272,10 +273,11 @@ lg_floor(size_t x)
#else #else
# error "Unsupported type size for lg_floor()" # error "Unsupported type size for lg_floor()"
#endif #endif
return (ret); assert(ret < UINT_MAX);
return ((unsigned)ret);
} }
#elif (defined(JEMALLOC_HAVE_BUILTIN_CLZ)) #elif (defined(JEMALLOC_HAVE_BUILTIN_CLZ))
JEMALLOC_INLINE size_t JEMALLOC_INLINE unsigned
lg_floor(size_t x) lg_floor(size_t x)
{ {
@ -290,7 +292,7 @@ lg_floor(size_t x)
#endif #endif
} }
#else #else
JEMALLOC_INLINE size_t JEMALLOC_INLINE unsigned
lg_floor(size_t x) lg_floor(size_t x)
{ {