mirror of
https://github.com/jemalloc/jemalloc.git
synced 2026-07-15 21:27:18 +03:00
Refactor permuted backtrace test allocation.
Refactor permuted backtrace test allocation that was originally used only by the prof_accum test, so that it can be used by other heap profiling test binaries.
This commit is contained in:
parent
f8034540a1
commit
cc9e626ea9
10 changed files with 60 additions and 56 deletions
31
test/include/test/btalloc.h
Normal file
31
test/include/test/btalloc.h
Normal file
|
|
@ -0,0 +1,31 @@
|
|||
/* btalloc() provides a mechanism for allocating via permuted backtraces. */
|
||||
void *btalloc(size_t size, unsigned bits);
|
||||
|
||||
#define btalloc_n_proto(n) \
|
||||
void *btalloc_##n(size_t size, unsigned bits);
|
||||
btalloc_n_proto(0)
|
||||
btalloc_n_proto(1)
|
||||
|
||||
#define btalloc_n_gen(n) \
|
||||
void * \
|
||||
btalloc_##n(size_t size, unsigned bits) \
|
||||
{ \
|
||||
void *p; \
|
||||
\
|
||||
if (bits == 0) \
|
||||
p = mallocx(size, 0); \
|
||||
else { \
|
||||
switch (bits & 0x1U) { \
|
||||
case 0: \
|
||||
p = (btalloc_0(size, bits >> 1)); \
|
||||
break; \
|
||||
case 1: \
|
||||
p = (btalloc_1(size, bits >> 1)); \
|
||||
break; \
|
||||
default: not_reached(); \
|
||||
} \
|
||||
} \
|
||||
/* Intentionally sabotage tail call optimization. */ \
|
||||
assert_ptr_not_null(p, "Unexpected mallocx() failure"); \
|
||||
return (p); \
|
||||
}
|
||||
|
|
@ -133,6 +133,7 @@
|
|||
/*
|
||||
* Common test utilities.
|
||||
*/
|
||||
#include "test/btalloc.h"
|
||||
#include "test/math.h"
|
||||
#include "test/mtx.h"
|
||||
#include "test/mq.h"
|
||||
|
|
|
|||
8
test/src/btalloc.c
Normal file
8
test/src/btalloc.c
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
#include "test/jemalloc_test.h"
|
||||
|
||||
void *
|
||||
btalloc(size_t size, unsigned bits)
|
||||
{
|
||||
|
||||
return (btalloc_0(size, bits));
|
||||
}
|
||||
3
test/src/btalloc_0.c
Normal file
3
test/src/btalloc_0.c
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
#include "test/jemalloc_test.h"
|
||||
|
||||
btalloc_n_gen(0)
|
||||
3
test/src/btalloc_1.c
Normal file
3
test/src/btalloc_1.c
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
#include "test/jemalloc_test.h"
|
||||
|
||||
btalloc_n_gen(1)
|
||||
|
|
@ -1,4 +1,9 @@
|
|||
#include "prof_accum.h"
|
||||
#include "test/jemalloc_test.h"
|
||||
|
||||
#define NTHREADS 4
|
||||
#define NALLOCS_PER_THREAD 50
|
||||
#define DUMP_INTERVAL 1
|
||||
#define BT_COUNT_CHECK_INTERVAL 5
|
||||
|
||||
#ifdef JEMALLOC_PROF
|
||||
const char *malloc_conf =
|
||||
|
|
@ -20,7 +25,7 @@ static void *
|
|||
alloc_from_permuted_backtrace(unsigned thd_ind, unsigned iteration)
|
||||
{
|
||||
|
||||
return (alloc_0(thd_ind*NALLOCS_PER_THREAD + iteration));
|
||||
return (btalloc(1, thd_ind*NALLOCS_PER_THREAD + iteration));
|
||||
}
|
||||
|
||||
static void *
|
||||
|
|
|
|||
|
|
@ -1,35 +0,0 @@
|
|||
#include "test/jemalloc_test.h"
|
||||
|
||||
#define NTHREADS 4
|
||||
#define NALLOCS_PER_THREAD 50
|
||||
#define DUMP_INTERVAL 1
|
||||
#define BT_COUNT_CHECK_INTERVAL 5
|
||||
|
||||
#define alloc_n_proto(n) \
|
||||
void *alloc_##n(unsigned bits);
|
||||
alloc_n_proto(0)
|
||||
alloc_n_proto(1)
|
||||
|
||||
#define alloc_n_gen(n) \
|
||||
void * \
|
||||
alloc_##n(unsigned bits) \
|
||||
{ \
|
||||
void *p; \
|
||||
\
|
||||
if (bits == 0) \
|
||||
p = mallocx(1, 0); \
|
||||
else { \
|
||||
switch (bits & 0x1U) { \
|
||||
case 0: \
|
||||
p = (alloc_0(bits >> 1)); \
|
||||
break; \
|
||||
case 1: \
|
||||
p = (alloc_1(bits >> 1)); \
|
||||
break; \
|
||||
default: not_reached(); \
|
||||
} \
|
||||
} \
|
||||
/* Intentionally sabotage tail call optimization. */ \
|
||||
assert_ptr_not_null(p, "Unexpected mallocx() failure"); \
|
||||
return (p); \
|
||||
}
|
||||
|
|
@ -1,3 +0,0 @@
|
|||
#include "prof_accum.h"
|
||||
|
||||
alloc_n_gen(0)
|
||||
|
|
@ -1,3 +0,0 @@
|
|||
#include "prof_accum.h"
|
||||
|
||||
alloc_n_gen(1)
|
||||
Loading…
Add table
Add a link
Reference in a new issue