4afd709d1f
Explicitly define three setters: - `prof_tctx_reset()`: set `prof_tctx` to `1U`, if we don't know in advance whether the allocation is large or not; - `prof_tctx_reset_sampled()`: set `prof_tctx` to `1U`, if we already know in advance that the allocation is large; - `prof_info_set()`: set a real `prof_tctx`, and also set other profiling info e.g. the allocation time. Code structure wise, the prof level is kept as a thin wrapper, the large level only provides low level setter APIs, and the arena level carries out the main logic.
30 lines
1.2 KiB
C
30 lines
1.2 KiB
C
#ifndef JEMALLOC_INTERNAL_LARGE_EXTERNS_H
|
|
#define JEMALLOC_INTERNAL_LARGE_EXTERNS_H
|
|
|
|
#include "jemalloc/internal/hook.h"
|
|
|
|
void *large_malloc(tsdn_t *tsdn, arena_t *arena, size_t usize, bool zero);
|
|
void *large_palloc(tsdn_t *tsdn, arena_t *arena, size_t usize, size_t alignment,
|
|
bool zero);
|
|
bool large_ralloc_no_move(tsdn_t *tsdn, extent_t *extent, size_t usize_min,
|
|
size_t usize_max, bool zero);
|
|
void *large_ralloc(tsdn_t *tsdn, arena_t *arena, void *ptr, size_t usize,
|
|
size_t alignment, bool zero, tcache_t *tcache,
|
|
hook_ralloc_args_t *hook_args);
|
|
|
|
typedef void (large_dalloc_junk_t)(void *, size_t);
|
|
extern large_dalloc_junk_t *JET_MUTABLE large_dalloc_junk;
|
|
|
|
typedef void (large_dalloc_maybe_junk_t)(void *, size_t);
|
|
extern large_dalloc_maybe_junk_t *JET_MUTABLE large_dalloc_maybe_junk;
|
|
|
|
void large_dalloc_prep_junked_locked(tsdn_t *tsdn, extent_t *extent);
|
|
void large_dalloc_finish(tsdn_t *tsdn, extent_t *extent);
|
|
void large_dalloc(tsdn_t *tsdn, extent_t *extent);
|
|
size_t large_salloc(tsdn_t *tsdn, const extent_t *extent);
|
|
void large_prof_info_get(const extent_t *extent, prof_info_t *prof_info);
|
|
void large_prof_tctx_reset(extent_t *extent);
|
|
void large_prof_info_set(extent_t *extent, prof_tctx_t *tctx);
|
|
|
|
#endif /* JEMALLOC_INTERNAL_LARGE_EXTERNS_H */
|