Commit Graph

20 Commits

Author SHA1 Message Date
David Chisnall
896cc9cf6f [NFC] Rename some PALs to make the naming more consistent. 2019-08-01 11:44:09 +01:00
David Chisnall
fd88b8464b [NFC] Separate out support for aligned allocation from the FreeBSD PAL.
NetBSD also supports `MAP_ALIGNED()` in `mmap` (according to the man
page, at least).
2019-08-01 11:39:26 +01:00
David Chisnall
d257f60731 [NFC] Add missing doc comments. 2019-08-01 11:03:22 +01:00
David Chisnall
4ed15def79 [NFC] Remove some code duplication in the PALs.
Pull out a generic POSIX PAL as a superclass for the Linux and generic
BSD PALs.  Now we have FreeBSD and Linux adding OS-specific behaviour,
OpenBSD as a named subclass of the generic BSD PAL that doesn't add any
behaviour.

I believe a NetBSD PAL should now be identical to the OpenBSD one -
patches welcome if anyone wants to test one!
2019-08-01 10:56:13 +01:00
David Carlier
fdae3b451f Creating base class instead used by both platforms. 2019-07-31 10:27:35 +00:00
Matthew Parkinson
e240dd279a Use FlatPageMap on OS with lazy commit
If the operating system will allocate private pages on demand for the
pagemap then use the FlatPageMap by default as it generates better code
for deallocation.
2019-07-10 20:11:03 +01:00
David Chisnall
896b248c8c Fix undefined behaviour in FreeBSD PAL.
We were passing an argument less than 4K to the MAP_ALIGNED macro, which
caused an undefined shift.  The compiler helpfully propagated the undef
values back to earlier in the code and gave us some exciting nonsense.
2019-07-05 09:42:07 +01:00
David Chisnall
c2780f99ed [FreeBSD] Fix a warning with GCC. 2019-07-01 14:35:35 +01:00
David Chisnall
95c23b1a00 Add the const parameter checker.
This complains if a non-const parameter is not modified. In the PALs,
the size parameter is modified only by some implementations, so we can
make it const in the ones where it isn't.
2019-04-30 09:46:10 +01:00
David Chisnall
5c197e4ae4 [NFC] More checks, comments on end of namespace braces. 2019-04-30 09:46:01 +01:00
David Chisnall
22d33ebf99 Add another checker.
Use nullptr where appropriate.
2019-04-29 15:00:25 +01:00
Matthew Parkinson
4faf9f3bee Use fewer header files
Removing some includes to reduce the code that is dragged in.
2019-04-29 11:02:47 +01:00
David Chisnall
6a5359b177 Pull aligned allocation out of the PAL.
The PAL can now advertise that it supports aligned allocation.  If it
does not, then the memory provider will do the alignment for it.

This change still leaves the PAL responsible for systematic testing, but
it should now be much easier to lift that out.
2019-02-25 12:54:16 +00:00
David Chisnall
a24e6270cc Provide a generic PAL feature detection mechanism.
We can support up to 64 optional features, currently only one is used.
2019-02-25 11:27:53 +00:00
David Chisnall
66cec23b23 Initial cut at a lazy decommit strategy.
This does not deallocate memory until the OS tells us that we are short
on memory, then tries to decommit all of the cached chunks (except for
the first page, used for the linked lists).

Nowhere near enough testing to commit to master yet!
2019-02-25 11:27:53 +00:00
Matthew Parkinson
8698f87018 Added some constexpr to some ifs. 2019-02-15 16:12:38 +00:00
Theo Butler
c555bf7218 fix doc comments for notify_using 2019-02-13 17:15:06 -05:00
David Chisnall
c3d46a9d8e Address review comments.
Move slow_allocator into a separate header in the snmalloc namespace and
rename it for consistency with the rest of the codebase.  Delete its
copy and move constructors / assignment operators.
2019-01-18 15:57:28 +00:00
David Chisnall
1324279eb5 Added some missing #includes. 2019-01-16 17:17:51 +00:00
Matthew Parkinson
4f9d991449 Initial commit of snmalloc
History squashed from internal development.

Internal history has commit hash:
  e27a0e485c44a5003a802de2661ce3b21e120316
2019-01-15 14:17:55 +00:00