Jason Evans
ff63dca363
Avoid blindly enabling assertions for header code when testing.
...
Restructure the test program master header to avoid blindly enabling
assertions. Prior to this change, assertion code in e.g. arena.h was
always enabled for tests, which could skew performance-related testing.
2016-03-23 16:15:42 -07:00
Jason Evans
f6bd2e5a17
Code formatting fixes.
2016-03-23 16:15:42 -07:00
Jason Evans
22af74e106
Refactor out signed/unsigned comparisons.
2016-03-15 09:40:02 -07:00
Jason Evans
824b947be0
Add (size_t) casts to MALLOCX_ALIGN().
...
Add (size_t) casts to MALLOCX_ALIGN() macros so that passing the integer
constant 0x80000000 does not cause a compiler warning about invalid
shift amount.
This resolves #354 .
2016-03-11 10:11:56 -08:00
Dave Watson
34dca5671f
Unittest for pairing heap
2016-03-08 13:48:27 -08:00
Dmitri Smirnov
33184bf698
Fix stack corruption and uninitialized var warning
...
Stack corruption happens in x64 bit
This resolves #347 .
2016-02-29 15:22:53 -08:00
Jason Evans
7d3055432d
Fix decay tests for --disable-tcache case.
2016-02-27 23:40:31 -08:00
Jason Evans
3c07f803aa
Fix stats.arenas.<i>.[...] for --disable-stats case.
...
Add missing stats.arenas.<i>.{dss,lg_dirty_mult,decay_time}
initialization.
Fix stats.arenas.<i>.{pactive,pdirty} to read under the protection of
the arena mutex.
2016-02-27 20:40:13 -08:00
Jason Evans
fd4858225b
Fix decay tests for --disable-stats case.
2016-02-27 20:38:29 -08:00
Jason Evans
a62e94cabb
Remove invalid tests.
...
Remove invalid tests that were intended to be tests of (hugemax+1) OOM,
for which tests already exist.
2016-02-26 16:27:52 -08:00
Jason Evans
01ecdf32d6
Miscellaneous bitmap refactoring.
2016-02-26 14:21:10 -08:00
Jason Evans
e3195fa4a5
Cast PTRDIFF_MAX to size_t before adding 1.
...
This fixes compilation warnings regarding integer overflow that were
introduced by 0c516a00c4
(Make *allocx()
size class overflow behavior defined.).
2016-02-25 16:40:24 -08:00
Jason Evans
0c516a00c4
Make *allocx() size class overflow behavior defined.
...
Limit supported size and alignment to HUGE_MAXCLASS, which in turn is
now limited to be less than PTRDIFF_MAX.
This resolves #278 and #295 .
2016-02-25 15:29:49 -08:00
Jason Evans
9e1810ca9d
Silence miscellaneous 64-to-32-bit data loss warnings.
2016-02-24 13:03:48 -08:00
Jason Evans
8f683b94a7
Make opt_narenas unsigned rather than size_t.
2016-02-24 13:03:48 -08:00
Dmitri Smirnov
b41a07c31a
Fix Windows build issues
...
This resolves #333 .
2016-02-23 18:55:45 -08:00
Dave Watson
2b1fc90b7b
Remove rbt_nil
...
Since this is an intrusive tree, rbt_nil is the whole size of the node
and can be quite large. For example, miscelm is ~100 bytes.
2016-02-23 18:09:25 -08:00
Jason Evans
0da8ce1e96
Use table lookup for run_quantize_{floor,ceil}().
...
Reduce run quantization overhead by generating lookup tables during
bootstrapping, and using the tables for all subsequent run quantization.
2016-02-22 16:47:34 -08:00
Jason Evans
a9a4684792
Test run quantization.
...
Also rename run_quantize_*() to improve clarity. These tests
demonstrate that run_quantize_ceil() is flawed.
2016-02-22 14:58:05 -08:00
Jason Evans
9bad079039
Refactor time_* into nstime_*.
...
Use a single uint64_t in nstime_t to store nanoseconds rather than using
struct timespec. This reduces fragility around conversions between long
and uint64_t, especially missing casts that only cause problems on
32-bit platforms.
2016-02-21 21:39:05 -08:00
Jason Evans
a0aaad1afa
Handle unaligned keys in hash().
...
Reported by Christopher Ferris <cferris@google.com>.
2016-02-20 10:23:48 -08:00
Jason Evans
9f24c94474
Increase test coverage in test_decay_ticks.
2016-02-20 09:02:49 -08:00
Jason Evans
243f7a0508
Implement decay-based unused dirty page purging.
...
This is an alternative to the existing ratio-based unused dirty page
purging, and is intended to eventually become the sole purging
mechanism.
Add mallctls:
- opt.purge
- opt.decay_time
- arena.<i>.decay
- arena.<i>.decay_time
- arenas.decay_time
- stats.arenas.<i>.decay_time
This resolves #325 .
2016-02-19 20:56:21 -08:00
Jason Evans
8e82af1166
Implement smoothstep table generation.
...
Check in a generated smootherstep table as smoothstep.h rather than
generating it at configure time, since not all systems (e.g. Windows)
have dc.
2016-02-19 20:56:15 -08:00
Jason Evans
34676d3369
Refactor prng* from cpp macros into inline functions.
...
Remove 32-bit variant, convert prng64() to prng_lg_range(), and add
prng_range().
2016-02-19 20:29:06 -08:00
Jason Evans
9998000b2b
Implement ticker.
...
Implement ticker, which provides a simple API for ticking off some
number of events before indicating that the ticker has hit its limit.
2016-02-19 20:29:06 -08:00
Jason Evans
94451d184b
Flesh out time_*() API.
2016-02-19 20:29:06 -08:00
Cameron Evans
e5d5a4a517
Add time_update().
2016-02-19 20:29:06 -08:00
Jason Evans
f829009929
Add --with-malloc-conf.
...
Add --with-malloc-conf, which makes it possible to embed a default
options string during configuration.
2016-02-19 20:29:06 -08:00
Jason Evans
49931bd8ff
Fix test_stats_arenas_summary fragility.
...
Fix test_stats_arenas_summary to deallocate before asserting that
purging must have happened.
2016-02-19 20:29:06 -08:00
Jason Evans
b24f74b862
Don't rely on unpurged chunks in xallocx() test.
2016-02-19 17:02:25 -08:00
Joshua Kahn
710ca112e3
Add test for tree destruction
2015-11-09 15:56:24 -08:00
Joshua Kahn
13b4015531
Allow const keys for lookup
...
Signed-off-by: Steve Dougherty <sdougherty@barracuda.com>
This resolves #281 .
2015-11-09 15:48:05 -08:00
Jason Evans
fed1f9f367
Fix intermittent xallocx() test failures.
...
Modify xallocx() tests that expect to expand in place to use a separate
arena. This avoids the potential for interposed internal allocations
from e.g. heap profile sampling to disrupt the tests.
This resolves #286 .
2015-10-01 13:48:09 -07:00
Jason Evans
044047fae1
Remove fragile xallocx() test case.
...
In addition to depending on map coalescing, the test depended on
munmap() being disabled so that chunk recycling would always succeed.
2015-09-24 19:52:28 -07:00
Jason Evans
03eb37e8fd
Make mallocx() OOM test more robust.
...
Make mallocx() OOM testing work correctly even on systems that can
allocate the majority of virtual address space in a single contiguous
region.
2015-09-24 16:44:16 -07:00
Jason Evans
d260f442ce
Fix xallocx(..., MALLOCX_ZERO) bugs.
...
Zero all trailing bytes of large allocations when
--enable-cache-oblivious configure option is enabled. This regression
was introduced by 8a03cf039c
(Implement
cache index randomization for large allocations.).
Zero trailing bytes of huge allocations when resizing from/to a size
class that is not a multiple of the chunk size.
2015-09-24 16:38:45 -07:00
Jason Evans
21523297fc
Add mallocx() OOM tests.
2015-09-17 15:27:28 -07:00
Jason Evans
65b940a3c5
Loosen expected xallocx() results.
...
Systems that do not support chunk split/merge cannot shrink/grow huge
allocations in place.
2015-09-15 15:48:42 -07:00
Jason Evans
aca490f004
Add more xallocx() overflow tests.
2015-09-15 14:39:29 -07:00
Jason Evans
676df88e48
Rename arena_maxclass to large_maxclass.
...
arena_maxclass is no longer an appropriate name, because arenas also
manage huge allocations.
2015-09-11 20:50:20 -07:00
Jason Evans
560a4e1e01
Fix xallocx() bugs.
...
Fix xallocx() bugs related to the 'extra' parameter when specified as
non-zero.
2015-09-11 20:40:34 -07:00
Jason Evans
a00b10735a
Fix "prof.reset" mallctl-related corruption.
...
Fix heap profiling to distinguish among otherwise identical sample sites
with interposed resets (triggered via the "prof.reset" mallctl). This
bug could cause data structure corruption that would most likely result
in a segfault.
2015-09-09 23:16:10 -07:00
Jason Evans
594c759f37
Optimize arena_prof_tctx_set().
...
Optimize arena_prof_tctx_set() to avoid reading run metadata when
deciding whether it's actually necessary to write.
2015-09-02 14:52:24 -07:00
Mike Hommey
4a2a3c9a6e
Don't purge junk filled chunks when shrinking huge allocations
...
When junk filling is enabled, shrinking an allocation fills the bytes
that were previously allocated but now aren't. Purging the chunk before
doing that is just a waste of time.
This resolves #260 .
2015-08-27 22:00:09 -07:00
Christopher Ferris
45e9f66c28
Fix arenas_cache_cleanup().
...
Fix arenas_cache_cleanup() to handle allocation/deallocation within the
application's thread-specific data cleanup functions even after
arenas_cache is torn down.
2015-08-21 12:33:17 -07:00
Jason Evans
d01fd19755
Rename index_t to szind_t to avoid an existing type on Solaris.
...
This resolves #256 .
2015-08-19 15:21:32 -07:00
Jason Evans
828d919b5e
Fix test for MinGW.
2015-08-12 15:21:07 -07:00
Jason Evans
38d8f50144
Fix assertion in test.
2015-08-12 12:06:38 -07:00
Jason Evans
03bf5b67be
Try to decommit new chunks.
...
Always leave decommit disabled on non-Windows systems.
2015-08-12 10:26:54 -07:00