summaryrefslogtreecommitdiffstats
path: root/configure.ac
Commit message (Collapse)AuthorAgeFilesLines
...
* Don't use msvc_compat's C99 headers with MSVC versions that have (some) C99 ↵Mike Hommey2014-06-021-0/+4
| | | | support
* Add size class computation capability.Jason Evans2014-05-291-0/+23
| | | | | | | Add size class computation capability, currently used only as validation of the size class lookup tables. Generalize the size class spacing used for bins, for eventual use throughout the full range of allocation sizes.
* STATIC_PAGE_SHIFT for cross-compiling jemallocDaniel Micay2014-05-281-1/+2
| | | | | | Sets `STATIC_PAGE_SHIFT` for cross-compiling jemalloc to 12. A shift of 12 represents a page size of 4k for practically all platforms.
* Use a configure test to detect the form of malloc_usable_size in malloc.hMike Hommey2014-05-271-2/+16
|
* Refactor huge allocation to be managed by arenas.Jason Evans2014-05-161-28/+0
| | | | | | | | | | | | | | | | | | | | Refactor huge allocation to be managed by arenas (though the global red-black tree of huge allocations remains for lookup during deallocation). This is the logical conclusion of recent changes that 1) made per arena dss precedence apply to huge allocation, and 2) made it possible to replace the per arena chunk allocation/deallocation functions. Remove the top level huge stats, and replace them with per arena huge stats. Normalize function names and types to *dalloc* (some were *dealloc*). Remove the --enable-mremap option. As jemalloc currently operates, this is a performace regression for some applications, but planned work to logarithmically space huge size classes should provide similar amortized performance. The motivation for this change was that mremap-based huge reallocation forced leaky abstractions that prevented refactoring.
* Update libunwind configuration check to look for unw_backtrace().Jason Evans2014-04-231-1/+1
| | | | | Update libunwind configuration check to look for unw_backtrace(), which is a newer API not available in older versions of libunwind.
* Make dss non-optional, and fix an "arena.<i>.dss" mallctl bug.Jason Evans2014-04-151-18/+5
| | | | | | | Make dss non-optional on all platforms which support sbrk(2). Fix the "arena.<i>.dss" mallctl to return an error if "primary" or "secondary" precedence is specified, but sbrk(2) is not supported.
* Reverse the cc-silence default.Jason Evans2014-04-151-5/+4
| | | | | Replace --enable-cc-silence with --disable-cc-silence, so that by default people won't see spurious warnings when building jemalloc.
* Remove the *allocm() API, which is superceded by the *allocx() API.Jason Evans2014-04-151-20/+1
|
* Allow libgcc-based backtracing on x86.Jason Evans2014-03-311-16/+0
| | | | | | | Remove autoconf code that explicitly disabled libgcc-based backtracing on i[3456]86. There is no mention of which platforms/compilers exhibited problems when this code was added, and chances are good that any gcc toolchain issues have long since been fixed.
* Keep frame pointers if using gcc frame intrinsics.Jason Evans2014-03-311-0/+1
| | | | | | Specify -fno-omit-frame-pointer when using __builtin_frame_address() and __builtin_return_address() for backtracing. This fixes backtracing failures on e.g. i686 for optimized builds.
* Adapt hash tests to big-endian systems.Jason Evans2014-03-301-0/+5
| | | | | | | | | The hash code, which has MurmurHash3 at its core, generates different output depending on system endianness, so adapt the expected output on big-endian systems. MurmurHash3 code also makes the assumption that unaligned access is okay (not true on all systems), but jemalloc only hashes data structures that have sufficient alignment to dodge this limitation.
* Add configure test to verify SSE2 code compiles.Jason Evans2014-02-251-12/+12
| | | | | | | | | | | | | | Make sure that emmintrin.h can be #include'd without causing a compilation error, rather than blindly defining HAVE_SSE2 based on architecture. Attempts to force SSE2 compilation on a 32-bit Ubuntu 13.10 system running as a VMware guest resulted in a no-win choice without any obvious explanation besides toolchain misconfiguration/bug: - Suffer compilation failure due to __MMX__, __SSE__, and __SSE2__ not being defined, even if -mmmx, -msse, and -msse2 are manually specified (note that they appear to be enabled by default). - Manually define __MMX__, __SSE__, and __SSE2__, and suffer compiler warnings that they are already automatically defined. This results in successful compilation and execution, but the noise is intolerable.
* Add workaround for missing 'restrict' keyword.Jason Evans2014-02-251-0/+5
| | | | | | | | | Add a cpp #define that removes 'restrict' keyword usage unless the compiler definitely supports C99. As written, 'restrict' is only enabled if the compiler supports the -std=gnu99 option (e.g. gcc and llvm). Reported by Tobias Hieta.
* Using MADV_FREE on Solaris/IllumosGeorge Kola2014-02-121-0/+1
|
* Fix name mangling for stress tests.Jason Evans2014-01-171-23/+77
| | | | | | | | | | | Fix stress tests such that testlib code uses the jet_ allocator, but test code uses libjemalloc. Generate jemalloc_{rename,mangle}.h, the former because it's needed for the stress test name mangling fix, and the latter for consistency. As an artifact of this change, some (but not all) definitions related to the experimental API are absent from the headers unless the feature is enabled at configure time.
* Implement the *allocx() API.Jason Evans2013-12-131-1/+1
| | | | | | | | | | | | | | | | | | | | | | | Implement the *allocx() API, which is a successor to the *allocm() API. The *allocx() functions are slightly simpler to use because they have fewer parameters, they directly return the results of primary interest, and mallocx()/rallocx() avoid the strict aliasing pitfall that allocm()/rallocx() share with posix_memalign(). The following code violates strict aliasing rules: foo_t *foo; allocm((void **)&foo, NULL, 42, 0); whereas the following is safe: foo_t *foo; void *p; allocm(&p, NULL, 42, 0); foo = (foo_t *)p; mallocx() does not have this problem: foo_t *foo = (foo_t *)mallocx(42, 0);
* Integrate SFMT 1.3.3 into test infrastructure.Jason Evans2013-12-091-0/+8
| | | | | | | | | | | | Integrate the SIMD-oriented Fast Mersenne Twister (SFMT) 1.3.3 into the test infrastructure. The sfmt_t state encapsulation modification comes from Crux (http://www.canonware.com/Crux/) and enables multiple concurrent PRNGs. test/unit/SFMT.c is an adaptation of SFMT's test.c that performs all the same validation, both for 32- and 64-bit generation.
* Normalize #define whitespace.Jason Evans2013-12-091-1/+1
| | | | Consistently use a tab rather than a space following #define.
* Add test code coverage analysis.Jason Evans2013-12-071-1/+32
| | | | Add test code coverage analysis based on gcov.
* Disable floating point code/linking when possible.Jason Evans2013-12-061-5/+6
| | | | | | | | | | | Unless heap profiling is enabled, disable floating point code and don't link with libm. This, in combination with e.g. EXTRA_CFLAGS=-mno-sse on x64 systems, makes it possible to completely disable floating point register use. Some versions of glibc neglect to save/restore caller-saved floating point registers during dynamic lazy symbol loading, and the symbol loading code uses whatever malloc the application happens to have linked/loaded with, the result being potential floating point register corruption.
* Fix more test refactoring issues.Jason Evans2013-12-061-0/+1
|
* Refactor to support more varied testing.Jason Evans2013-12-041-20/+68
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Refactor the test harness to support three types of tests: - unit: White box unit tests. These tests have full access to all internal jemalloc library symbols. Though in actuality all symbols are prefixed by jet_, macro-based name mangling abstracts this away from test code. - integration: Black box integration tests. These tests link with the installable shared jemalloc library, and with the exception of some utility code and configure-generated macro definitions, they have no access to jemalloc internals. - stress: Black box stress tests. These tests link with the installable shared jemalloc library, as well as with an internal allocator with symbols prefixed by jet_ (same as for unit tests) that can be used to allocate data structures that are internal to the test code. Move existing tests into test/{unit,integration}/ as appropriate. Split out internal parts of jemalloc_defs.h.in and put them in jemalloc_internal_defs.h.in. This reduces internals exposure to applications that #include <jemalloc/jemalloc.h>. Refactor jemalloc.h header generation so that a single header file results, and the prototypes can be used to generate jet_ prototypes for tests. Split jemalloc.h.in into multiple parts (jemalloc_defs.h.in, jemalloc_macros.h.in, jemalloc_protos.h.in, jemalloc_mangle.h.in) and use a shell script to generate a unified jemalloc.h at configure time. Change the default private namespace prefix from "" to "je_". Add missing private namespace mangling. Remove hard-coded private_namespace.h. Instead generate it and private_unnamespace.h from private_symbols.txt. Use similar logic for public symbols, which aids in name mangling for jet_ symbols. Add test_warn() and test_fail(). Replace existing exit(1) calls with test_fail() calls.
* Avoid deprecated sbrk(2) on OS X.Jason Evans2013-12-041-1/+7
| | | | | Avoid referencing sbrk(2) on OS X, because it is deprecated as of OS X 10.9 (Mavericks), and the compiler warns against using it.
* Fix build break for MSVC.Jason Evans2013-08-201-0/+5
| | | | | | | | Introduce AROUT to control whether there is space between ARFLAGS and $@. This regression was introduced by ad505e0ec622883fbb0650763ea8b54f64a770c9. Reported by Mike Hommey.
* Allow toolchain to determine arJory A. Pratt2013-08-191-3/+7
|
* Fix quoting bug in --without-export implementation.Jason Evans2013-01-231-1/+1
|
* Fix AC_PATH_PROG() calls to specify default.Jason Evans2013-01-221-4/+4
| | | | | | | | | | Fix AC_PATH_PROG() calls to specify 'false' as the default, so that if the configure script fails to find a program, the false program is instead called, and an error occurs. Prior to this fix, if xsltproc could not be found, make would not report an error due to the leading -o in the xsltproc invocation. Reported by David Reiss.
* Fix build break on *BSDGarrett Cooper2012-12-241-0/+1
| | | | | | | Linux uses alloca.h; many other operating systems define alloca(3) in stdlib.h. Signed-off-by: Garrett Cooper <yanegomi@gmail.com>
* Improve configure tests for ffslGarrett Cooper2012-12-241-2/+4
| | | | | | | | | | In particular: - ffsl always returns int, not long, on FreeBSD, Linux, and OSX. - Mute compiler warnings about rv being unused (and the potential for compilers optimizing out the call completely) by dumping the value with printf(3). Signed-off-by: Garrett Cooper <yanegomi@gmail.com>
* Allow to enable ivsalloc independentlyMike Hommey2012-12-231-2/+17
|
* Allow to disable the zone allocator on DarwinMike Hommey2012-12-231-1/+20
|
* Allow to build without exporting symbolsMike Hommey2012-11-251-0/+7
| | | | | | When statically linking jemalloc, it may be beneficial not to export its symbols if it makes sense, which allows the compiler and the linker to do some further optimizations.
* Drop const from malloc_usable_size() argument on Linux.Jason Evans2012-10-091-0/+3
| | | | | Drop const from malloc_usable_size() argument on Linux, in order to match the prototype in Linux's malloc.h.
* Remove -fno-common compiler flag for OS X.Mike Hommey2012-05-091-1/+1
| | | | | It doesn't allow the je_malloc_message and je_malloc_conf symbols to be overridden when linking statically.
* Add the --enable-mremap option.Jason Evans2012-05-091-10/+28
| | | | | | Add the --enable-mremap option, and disable the use of mremap(2) by default, for the same reason that freeing chunks via munmap(2) is disabled by default on Linux: semi-permanent VM map fragmentation.
* Use "hardcoded" dependencies when compiler doesn't support -MMMike Hommey2012-05-021-0/+3
|
* Check for VALGRIND_RESIZEINPLACE_BLOCK supportMike Hommey2012-05-021-4/+1
| | | | | VALGRIND_RESIZEINPLACE_BLOCK was added in valgrind 3.7. Unfortunately, the __VALGRIND_MINOR__ macro still says 6 in 3.7 :(
* Add support for MSVCMike Hommey2012-05-011-5/+49
| | | | Tested with MSVC 8 32 and 64 bits.
* Few configure.ac adjustmentsMike Hommey2012-05-011-12/+6
| | | | | | - Use the extensions autoconf finds for object and executable files. - Remove the sorev variable, and replace SOREV definition with sorev's. - Default to je_ prefix on win32.
* Force use of TLS if heap profiling is enabled.Jason Evans2012-04-231-0/+4
|
* Fix jemalloc.sh code generation.Jason Evans2012-04-231-0/+4
| | | | | Fix jemalloc.sh code generation by adding @sorev@ and using it instead of @SOREV@ (which contains Makefile-specific variables).
* Fix intmax_t configure error messageMike Hommey2012-04-221-1/+1
|
* Add support for MingwMike Hommey2012-04-221-15/+45
|
* Refactor object and library build, and only build PIC libraries when ↵Mike Hommey2012-04-181-0/+2
| | | | PIC_CFLAGS is defined
* Make versioned shared library suffix configurableMike Hommey2012-04-181-0/+3
| | | | | | | | This allows for different patterns for file names: - lib.so.version for e.g. Linux - lib.version.dylib for OSX (which is much more common than lib.dylib.version) - lib.dll for Windows (no version at all).
* Add atomic(9) implementations of atomic operations.Jason Evans2012-04-171-1/+24
| | | | | Add atomic(9) implementations of atomic operations. These are used on FreeBSD for non-x86 architectures.
* Limit the number of flags directly given to the linker, and refactor rpathMike Hommey2012-04-171-6/+5
| | | | This will make things easier for MSVC support.
* Add variables for library prefix, and static library, object and executable ↵Mike Hommey2012-04-171-0/+8
| | | | | | suffixes This makes hacking on Makefile easier.
* Add the --disable-munmap option.Jason Evans2012-04-171-66/+19
| | | | | | Add the --disable-munmap option, remove the configure test that attempted to detect the VM allocation quirk known to exist on Linux x86[_64], and make --disable-munmap implicit on Linux.