Commit Graph

17 Commits

Author SHA1 Message Date
Nathaniel Filardo
20e804728b Move bits::is_aligned_block to address.h
And chase consequences
2019-11-26 15:33:09 +00:00
Matthew Parkinson
4827b7615b Fix inline statics in Pal_Windows. 2019-08-15 11:38:45 +01:00
David Chisnall
6dbe24da2e [NFC] Replace HEADER_GLOBAL with inline (C++17).
HEADER_GLOBAL was using non-standard attributes to achieve what C++17
now permits with a keyword.  Use the standard formulation.

Update the README to note that gcc is still not recommended, but because
of its poor codegen for 128-bit atomic compare and exchange, rather than
because it doesn't support the attribute used for HEADER_GLOBAL.
2019-08-13 17:30:37 +01:00
Matthew Parkinson
b38c36b40f Added a fflush to the error message. 2019-05-08 17:56:48 +01:00
Matthew Parkinson
3c9fe1041a Added error message to Windows Pal using VirtualAlloc. (#44) 2019-05-08 17:10:53 +01:00
David Chisnall
a4dd814f6e [NFC] Clang-format. 2019-02-26 16:56:40 +00:00
David Chisnall
9ab0eef85a Restore accidentally deleted variables. 2019-02-26 16:56:40 +00: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
7a9ce97166 Clangformat 2019-02-20 17:36:39 +01:00
Matthew Parkinson
9104f81285 Remove Undefined preprocessor behaviour 2019-02-20 17:36:39 +01:00
Matthew Parkinson
98dd9573c7 Fix ifdef 2019-02-20 17:36:39 +01:00
David Chisnall
4830bd4021 Check for an SDK version before enabling VirtualAlloc2.
This is mainly to keep the CI system happy: it's using an old SDK
because the new version of cl.exe doesn't work with cmake...
2019-02-20 17:36:39 +01:00
David Chisnall
2ee3ba59ee Use VirtualAlloc2 on Windows.
The newer API (Windows 10 and newer) allows the allocator to ask for
strongly aligned memory.

This is enabled only if the `WINVER` macro is set to target Windows 10
or newer.  There is now a CMake option to target older versions of
Windows, so we can test both code paths.

The Azure Pipelines config now includes a test of the compatibility
version.  This runs only the release build, because it's mainly there as
a sanity check - 99% of the code is the same as the default Windows
config.
2019-02-20 17:36:39 +01:00
Theo Butler
c555bf7218 fix doc comments for notify_using 2019-02-13 17:15:06 -05: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