Commit Graph

92 Commits

Author SHA1 Message Date
Matthew Parkinson
5e149b083f One more constexpr 2019-02-15 17:43:27 +00:00
Matthew Parkinson
8698f87018 Added some constexpr to some ifs. 2019-02-15 16:12:38 +00:00
Matthew Parkinson
ac8e5e4e5b Fix comment to represent current PAL API. 2019-02-15 09:24:01 +00:00
Matthew Parkinson
bf58015c25 Merge pull request #20 from Theodus/malloc-tests
Add malloc tests
2019-02-15 09:12:07 +00:00
Theo Butler
a3fb2b9531 cleanup some tests 2019-02-14 22:31:45 -05:00
Theo Butler
d2909eed0a Merge branch 'master' into malloc-tests 2019-02-14 22:30:48 -05:00
Theo Butler
90414f82f6 Merge pull request #22 from Microsoft/zero_bug
Pal zero bug alignment
2019-02-14 22:26:18 -05:00
Matthew Parkinson
adeecfb0f1 Added bug fix to alignment of using. 2019-02-14 20:08:04 +00:00
Matthew Parkinson
8b9a525500 Added zero test at threshold. 2019-02-14 19:59:36 +00:00
Theo Butler
c555bf7218 fix doc comments for notify_using 2019-02-13 17:15:06 -05:00
Matthew Parkinson
35803305f2 Merge pull request #19 from plietar/visibility
Make internal symbols hidden.
2019-02-13 21:50:00 +00:00
Theo Butler
057595a57e remove -1 check in calloc 2019-02-13 16:03:38 -05:00
Theo Butler
942313fec7 replace asserts with abort 2019-02-13 10:03:41 -05:00
Theo Butler
24ba068dce remove randomness from malloc tests 2019-02-13 08:42:51 -05:00
Theo Butler
0ff2301083 use malloc shim in malloc tests 2019-02-13 08:12:07 -05:00
Theo Butler
e42551bb15 only build malloc tests on POSIX platforms 2019-02-12 22:05:36 -05:00
theodus
a9615bc6aa mark variables unused in release build 2019-02-12 20:22:10 -05:00
Theo Butler
f6497e6ee3 Add malloc tests 2019-02-12 19:50:15 -05:00
Paul Liétar
8d8761f248 Make internal symbols hidden.
Only the malloc/free/... interface is exported.

This allows all of C++'s weak ODR symbols to be resolved at
compile-time, rather than staying weak and resolved at load-time.

Since internal calls don't need to go through the PLT anymore, we get a
nice speedup, at least on small objects.
2019-02-12 23:27:42 +00:00
Matthew Parkinson
a7f0695776 Merge pull request #17 from plietar/fix-align
Fix the condition on when to allocate a new block.
2019-02-12 13:10:53 +00:00
Paul Liétar
79b432ddab Fix the condition on when to allocate a new block.
Previously we would pretty much always allocate a new block for each
allocator, making them 16MiB aligned.
2019-02-12 12:47:22 +00:00
David Chisnall
ccd8ec9b4f Disable rtti / exceptions on the non-Windows builds.
RTTI makes the binaries bigger, exceptions make life harder for
optimisers.  Neither are actually used.

This doesn't preclude anything #including snmalloc.h with RTTI enabled,
it just disables it in the shim libraries and tests.

The FreeBSD libc builds were already doing this with no ill effect.
2019-02-06 17:46:58 +00:00
Matthew Parkinson
2cd84c80b2 Build shim with 1MiB superslabs. 2019-02-06 17:08:47 +00:00
Matthew Parkinson
731757b29c Merge pull request #13 from Microsoft/matt-refactor
Simplification around remote allocation
2019-02-06 11:25:07 +00:00
Matthew Parkinson
f3897dd3e0 Code review feedback. 2019-02-05 16:57:09 +00:00
Matthew Parkinson
83c55fe5da Simplify remote allocator.
Don't store the sizeclass, as we can find it easily, and already are
going to touch though cache lines in the common case.
2019-02-05 13:27:19 +00:00
Matthew Parkinson
122a5de811 Refactor code to correctly handle low bits of allocator ID. 2019-02-05 13:11:55 +00:00
David Chisnall
fc24b8be3d Merge pull request #12 from Theodus/override
Avoid unnecessary allocation from realloc
2019-02-03 13:30:21 +00:00
theodus
ae3f9f6aec Get alloc size without wrapper 2019-02-03 08:19:11 -05:00
theodus
2b8b4c884f Do not realloc if size is in the same sizeclass 2019-02-02 17:28:02 -05:00
theodus
85cf5dd097 Avoid unnecessary allocation from realloc 2019-02-02 14:47:06 -05:00
Matthew Parkinson
c0ceb6e08f Merge pull request #11 from Theodus/master
Fix assertion failure in memalign
2019-01-30 17:36:13 +00:00
theodus
61b310d9d6 Fix assertion failure in memalign 2019-01-30 12:14:16 -05:00
Matthew Parkinson
a838372989 Merge pull request #10 from Microsoft/hardening
Hardening allocator
2019-01-25 23:16:30 +00:00
Matthew Parkinson
ec59820970 Use placement new instead of init for metaslab. 2019-01-25 19:46:24 +00:00
Matthew Parkinson
06ff1ffe0a Renamed zero to init for metaslab. 2019-01-25 16:38:10 +00:00
Matthew Parkinson
e5c40c1231 Remove an auto as not correctly inferred. 2019-01-24 11:48:02 +00:00
Matthew Parkinson
d5fb7150a3 Clang format 2019-01-24 11:39:19 +00:00
Matthew Parkinson
294efe8e03 Hardening access to meta data
Introduce a wrapper that ensure various fields of meta data, represent
valid indexes into the the address space, and not beyond the current
slab/superslab.
2019-01-24 11:39:18 +00:00
Matthew Parkinson
2083b29c9b Remove a raw pointer usage
Metaslab can be handled as as ref, rather than a raw pointer.
2019-01-24 11:39:18 +00:00
Matthew Parkinson
e30c94cb2a Apply ModArray to Metaslab data
Prevent bugs accessing outside the Slabs meta data.
2019-01-24 11:39:18 +00:00
Matthew Parkinson
5b81caac87 Merge pull request #9 from Microsoft/two_alloc_types
Add example for including the allocator with different settings in two compilation units.
2019-01-24 11:38:20 +00:00
Matthew Parkinson
67fbcba653 Clang format 2019-01-24 11:22:44 +00:00
Matthew Parkinson
28a28bb1ed Simple example of using two allocators in one application.
Example to simulate using two allocators in one application.  This will
be useful for scenarios in openenclave.
2019-01-23 13:19:46 +00:00
Matthew Parkinson
5240b3f8c6 Formatting 2019-01-23 11:06:07 +00:00
Matthew Parkinson
ef3a578503 Allow __je_bootstrap methods to not be compiled
The __je_bootstrap.. allocator methods can be specified that they
shouldn't  be compiled using NO_BOOTSTRAP_ALLOCATION.
2019-01-23 11:05:50 +00:00
Matthew Parkinson
8d074468ae Fix MSVC warning in malloc.cc 2019-01-23 11:03:43 +00:00
Matthew Parkinson
e51f1c3d50 Namespace test globals for external_pointer
Some times the global count was leading to a warning with a local count
in the test.
2019-01-23 11:03:13 +00:00
Matthew Parkinson
e0a2f10412 Merge pull request #8 from Microsoft/external_pointer_fix
External pointer fix
2019-01-22 17:53:59 +00:00
Matthew Parkinson
745a2a53d1 Clang format 2019-01-22 17:18:54 +00:00