#include "test/jemalloc_test.h"
#include "test/bench.h"

static void
large_mallocx_free(void) {
	/*
	 * We go a bit larger than the large minclass on its own to better
	 * expose costs from things like zeroing.
	 */
	void *p = mallocx(SC_LARGE_MINCLASS, MALLOCX_TCACHE_NONE);
	assert_ptr_not_null(p, "mallocx shouldn't fail");
	p = no_opt_ptr(p);
	free(p);
}

static void
small_mallocx_free(void) {
	void *p = mallocx(16, 0);
	assert_ptr_not_null(p, "mallocx shouldn't fail");
	p = no_opt_ptr(p);
	free(p);
}

TEST_BEGIN(test_large_vs_small) {
	compare_funcs(100 * 1000, 1 * 1000 * 1000, "large mallocx",
	    large_mallocx_free, "small mallocx", small_mallocx_free);
}
TEST_END

int
main(void) {
	return test_no_reentrancy(test_large_vs_small);
}
