jemalloc cpp new/delete bindings
Adds cpp bindings for jemalloc, along with necessary autoconf settings. This is mostly to add sized deallocation support, which can't be added from C directly. Sized deallocation is ~10% microbench improvement. * Import ax_cxx_compile_stdcxx.m4 from the autoconf repo, seems like the easiest way to get c++14 detection. * Adds various other changes, like CXXFLAGS, to configure.ac. * Adds new rules to Makefile.in for src/jemalloc-cpp.cpp, and a basic unittest. * Both new and delete are overridden, to ensure jemalloc is used for both. * TODO future enhancement of avoiding extra PLT thunks for new and delete - sdallocx and malloc are publicly exported jemalloc symbols, using an alias would link them directly. Unfortunately, was having trouble getting it to play nice with jemalloc's namespace support. Testing: Tested gcc 4.8, gcc 5, gcc 5.2, clang 4.0. Only gcc >= 5 has sized deallocation support, verified that the rest build correctly. Tested mac osx and Centos. Tested --with-jemalloc-prefix and --without-export. This resolves #202.
This commit is contained in:
18
test/integration/cpp/basic.cpp
Normal file
18
test/integration/cpp/basic.cpp
Normal file
@@ -0,0 +1,18 @@
|
||||
#include <memory>
|
||||
#include "test/jemalloc_test.h"
|
||||
|
||||
TEST_BEGIN(test_basic)
|
||||
{
|
||||
auto foo = new long(4);
|
||||
assert_ptr_not_null(foo, "Unexpected new[] failure");
|
||||
delete foo;
|
||||
}
|
||||
TEST_END
|
||||
|
||||
int
|
||||
main()
|
||||
{
|
||||
|
||||
return (test(
|
||||
test_basic));
|
||||
}
|
Reference in New Issue
Block a user