summaryrefslogtreecommitdiffstats
path: root/deps/jemalloc/test/include/test/btalloc.h
diff options
context:
space:
mode:
Diffstat (limited to 'deps/jemalloc/test/include/test/btalloc.h')
-rw-r--r--deps/jemalloc/test/include/test/btalloc.h30
1 files changed, 30 insertions, 0 deletions
diff --git a/deps/jemalloc/test/include/test/btalloc.h b/deps/jemalloc/test/include/test/btalloc.h
new file mode 100644
index 0000000..8f34599
--- /dev/null
+++ b/deps/jemalloc/test/include/test/btalloc.h
@@ -0,0 +1,30 @@
+/* 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. */ \
+ expect_ptr_not_null(p, "Unexpected mallocx() failure"); \
+ return p; \
+}