Mark some functions as const (aka. pure)
See https://gcc.gnu.org/onlinedocs/gcc/Common-Function-Attributes.html for details.pull/195/head
parent
0d6d63cbe7
commit
815dae1ad3
14
h_malloc.c
14
h_malloc.c
|
@ -154,7 +154,7 @@ static const u16 size_class_slots[] = {
|
||||||
#endif
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
static size_t get_slots(unsigned class) {
|
CONST static size_t get_slots(unsigned class) {
|
||||||
return size_class_slots[class];
|
return size_class_slots[class];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -187,7 +187,7 @@ struct size_info {
|
||||||
size_t class;
|
size_t class;
|
||||||
};
|
};
|
||||||
|
|
||||||
static inline struct size_info get_size_info(size_t size) {
|
CONST static inline struct size_info get_size_info(size_t size) {
|
||||||
if (unlikely(size == 0)) {
|
if (unlikely(size == 0)) {
|
||||||
return (struct size_info){0, 0};
|
return (struct size_info){0, 0};
|
||||||
}
|
}
|
||||||
|
@ -218,7 +218,7 @@ static inline struct size_info get_size_info_align(size_t size, size_t alignment
|
||||||
fatal_error("invalid size for slabs");
|
fatal_error("invalid size for slabs");
|
||||||
}
|
}
|
||||||
|
|
||||||
static size_t get_slab_size(size_t slots, size_t size) {
|
CONST static size_t get_slab_size(size_t slots, size_t size) {
|
||||||
return page_align(slots * size);
|
return page_align(slots * size);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -283,7 +283,7 @@ static void *get_slab(const struct size_class *c, size_t slab_size, const struct
|
||||||
|
|
||||||
#define MAX_METADATA_MAX (CLASS_REGION_SIZE / PAGE_SIZE)
|
#define MAX_METADATA_MAX (CLASS_REGION_SIZE / PAGE_SIZE)
|
||||||
|
|
||||||
static size_t get_metadata_max(size_t slab_size) {
|
CONST static size_t get_metadata_max(size_t slab_size) {
|
||||||
return CLASS_REGION_SIZE / slab_size;
|
return CLASS_REGION_SIZE / slab_size;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -356,7 +356,7 @@ static bool is_quarantine_slot(const struct slab_metadata *metadata, size_t inde
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
static u64 get_mask(size_t slots) {
|
CONST static u64 get_mask(size_t slots) {
|
||||||
return slots < U64_WIDTH ? ~0UL << slots : 0;
|
return slots < U64_WIDTH ? ~0UL << slots : 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1190,7 +1190,7 @@ COLD __attribute__((constructor(101))) static void trigger_early_init(void) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Returns 0 on overflow.
|
// Returns 0 on overflow.
|
||||||
static size_t get_large_size_class(size_t size) {
|
CONST static size_t get_large_size_class(size_t size) {
|
||||||
if (CONFIG_LARGE_SIZE_CLASSES) {
|
if (CONFIG_LARGE_SIZE_CLASSES) {
|
||||||
// Continue small size class growth pattern of power of 2 spacing classes:
|
// Continue small size class growth pattern of power of 2 spacing classes:
|
||||||
//
|
//
|
||||||
|
@ -1313,7 +1313,7 @@ static int allocate_aligned(unsigned arena, void **memptr, size_t alignment, siz
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static size_t adjust_size_for_canary(size_t size) {
|
CONST static size_t adjust_size_for_canary(size_t size) {
|
||||||
if (size > 0 && size <= max_slab_size_class) {
|
if (size > 0 && size <= max_slab_size_class) {
|
||||||
return size + canary_size;
|
return size + canary_size;
|
||||||
}
|
}
|
||||||
|
|
4
pages.h
4
pages.h
|
@ -16,11 +16,11 @@ void *allocate_pages(size_t usable_size, size_t guard_size, bool unprotect, cons
|
||||||
void *allocate_pages_aligned(size_t usable_size, size_t alignment, size_t guard_size, const char *name);
|
void *allocate_pages_aligned(size_t usable_size, size_t alignment, size_t guard_size, const char *name);
|
||||||
void deallocate_pages(void *usable, size_t usable_size, size_t guard_size);
|
void deallocate_pages(void *usable, size_t usable_size, size_t guard_size);
|
||||||
|
|
||||||
static inline size_t page_align(size_t size) {
|
CONST static inline size_t page_align(size_t size) {
|
||||||
return align(size, PAGE_SIZE);
|
return align(size, PAGE_SIZE);
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline size_t hash_page(const void *p) {
|
CONST static inline size_t hash_page(const void *p) {
|
||||||
uintptr_t u = (uintptr_t)p >> PAGE_SHIFT;
|
uintptr_t u = (uintptr_t)p >> PAGE_SHIFT;
|
||||||
size_t sum = u;
|
size_t sum = u;
|
||||||
sum = (sum << 7) - sum + (u >> 16);
|
sum = (sum << 7) - sum + (u >> 16);
|
||||||
|
|
8
util.h
8
util.h
|
@ -29,6 +29,8 @@
|
||||||
#define STRINGIFY(s) #s
|
#define STRINGIFY(s) #s
|
||||||
#define ALIAS(f) __attribute__((alias(STRINGIFY(f))))
|
#define ALIAS(f) __attribute__((alias(STRINGIFY(f))))
|
||||||
|
|
||||||
|
#define CONST __attribute__ ((const))
|
||||||
|
|
||||||
typedef uint8_t u8;
|
typedef uint8_t u8;
|
||||||
typedef uint16_t u16;
|
typedef uint16_t u16;
|
||||||
typedef uint32_t u32;
|
typedef uint32_t u32;
|
||||||
|
@ -42,16 +44,16 @@ static inline int ffz64(u64 x) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// parameter must not be 0
|
// parameter must not be 0
|
||||||
static inline int clz64(u64 x) {
|
CONST static inline int clz64(u64 x) {
|
||||||
return __builtin_clzll(x);
|
return __builtin_clzll(x);
|
||||||
}
|
}
|
||||||
|
|
||||||
// parameter must not be 0
|
// parameter must not be 0
|
||||||
static inline u64 log2u64(u64 x) {
|
CONST static inline u64 log2u64(u64 x) {
|
||||||
return U64_WIDTH - clz64(x) - 1;
|
return U64_WIDTH - clz64(x) - 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline size_t align(size_t size, size_t align) {
|
CONST static inline size_t align(size_t size, size_t align) {
|
||||||
size_t mask = align - 1;
|
size_t mask = align - 1;
|
||||||
return (size + mask) & ~mask;
|
return (size + mask) & ~mask;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue