calculate slab size class instead of array loop

This commit is contained in:
Daniel Micay
2022-01-16 14:05:59 -05:00
parent d8cb2d9f7a
commit 81cf2f27a0
2 changed files with 17 additions and 13 deletions
+6 -2
View File
@@ -35,6 +35,8 @@ typedef uint32_t u32;
typedef uint64_t u64;
typedef unsigned __int128 u128;
#define U64_WIDTH 64
static inline int clz64(u64 x) {
return __builtin_clzll(x);
}
@@ -43,6 +45,10 @@ static inline int ffz64(u64 x) {
return __builtin_ffsll(~x);
}
static inline u64 log2u64(u64 x) {
return U64_WIDTH - clz64(x) - 1;
}
static inline size_t align(size_t size, size_t align) {
size_t mask = align - 1;
return (size + mask) & ~mask;
@@ -50,8 +56,6 @@ static inline size_t align(size_t size, size_t align) {
COLD noreturn void fatal_error(const char *s);
#define U64_WIDTH 64
#if CONFIG_SEAL_METADATA
#ifdef __GLIBC__