12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 |
- #include "test/jemalloc_test.h"
- #include "jemalloc/internal/prof_data.h"
- TEST_BEGIN(test_prof_realloc) {
- tsd_t *tsd;
- int flags;
- void *p, *q;
- prof_info_t prof_info_p, prof_info_q;
- prof_cnt_t cnt_0, cnt_1, cnt_2, cnt_3;
- test_skip_if(!config_prof);
- tsd = tsd_fetch();
- flags = MALLOCX_TCACHE_NONE;
- prof_cnt_all(&cnt_0);
- p = mallocx(1024, flags);
- expect_ptr_not_null(p, "Unexpected mallocx() failure");
- prof_info_get(tsd, p, NULL, &prof_info_p);
- expect_ptr_ne(prof_info_p.alloc_tctx, (prof_tctx_t *)(uintptr_t)1U,
- "Expected valid tctx");
- prof_cnt_all(&cnt_1);
- expect_u64_eq(cnt_0.curobjs + 1, cnt_1.curobjs,
- "Allocation should have increased sample size");
- q = rallocx(p, 2048, flags);
- expect_ptr_ne(p, q, "Expected move");
- expect_ptr_not_null(p, "Unexpected rmallocx() failure");
- prof_info_get(tsd, q, NULL, &prof_info_q);
- expect_ptr_ne(prof_info_q.alloc_tctx, (prof_tctx_t *)(uintptr_t)1U,
- "Expected valid tctx");
- prof_cnt_all(&cnt_2);
- expect_u64_eq(cnt_1.curobjs, cnt_2.curobjs,
- "Reallocation should not have changed sample size");
- dallocx(q, flags);
- prof_cnt_all(&cnt_3);
- expect_u64_eq(cnt_0.curobjs, cnt_3.curobjs,
- "Sample size should have returned to base level");
- }
- TEST_END
- int
- main(void) {
- return test_no_reentrancy(
- test_prof_realloc);
- }
|