Commit Graph

166 Commits

Author SHA1 Message Date
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
30ad9722a7 Merge pull request #35 from Microsoft/shared_allocator_cmake_support
Shared allocator cmake support
2019-04-12 13:04:41 +01:00
Roy Schuster
29e4bdd29d Splitting EXPOSE_EXTERNAL_ALLOCATOR_API to EXPOSE_EXTERNAL_PAGEMAP and EXPOSE_EXTERNAL_RESERVE. Only the shim can be affected by passing the new pre-processor definitions to cmake. 2019-04-12 12:32:37 +01:00
Roy Schuster
81030a554f EOL conversion for clang-format 2019-04-12 10:43:55 +01:00
Roy Schuster
eb2b8a0c80 Checking for redefinition of SNMALLOC_EXPOSE_PAGEMAP, since it can now be a cmake argument 2019-04-12 10:10:58 +01:00
Roy Schuster
ebc1dab1cf Passing the EXPOSE_SHARED_ALLOCATOR argument to cmake will now expose the external allocator and pagemap sharing API 2019-04-12 09:51:52 +01:00
David Chisnall
8e5f96686a Merge pull request #34 from Microsoft/pagemap_access_refactor
Pagemap access refactor
2019-04-12 08:59:22 +01:00
David Chisnall
ca804c1815 [NFC] clang-format 2019-04-11 17:36:14 +01:00
David Chisnall
7f057f308f Fix inverted logic in the type check. 2019-04-11 17:31:44 +01:00
David Chisnall
5c1abffdda Fix missing const. 2019-04-11 17:25:53 +01:00
David Chisnall
9b3641df91 Address Matt's review comments. 2019-04-11 17:08:16 +01:00
David Chisnall
785766b129 Move constants into the right file.
Document them while we're moving them.
2019-04-11 16:57:12 +01:00
David Chisnall
cd8ba18191 Delete some dead code that's difficult to use correctly. 2019-04-11 16:55:05 +01:00
David Chisnall
9d24f7e24f Fix callers of renamed function. 2019-04-11 10:42:50 +01:00
David Chisnall
a64cc5562f Remove indirection in the common case.
Rather than unconditionally storing a pointer to the pagemap and
initialising this with a global, we now provide a choice of three
compile-time options for how the pagemap should be accessed.
2019-04-11 10:33:52 +01:00
David Chisnall
29b45c3345 Rename the pagemap accessor to be noun-verb. 2019-04-11 10:33:36 +01:00
David Chisnall
29aa8ef67e Give up on new making CI support recent clang-format.
Revert to 6.0 and use that locally to insert an extra blank line to make
CI happy...
2019-04-10 13:25:43 +01:00
David Chisnall
c673926d15 Add missing const.
No idea why this only raised an error with cl.exe, it was wrong on all
platforms.
2019-04-10 13:13:09 +01:00
David Chisnall
6f19d4e1e7 Bump the clang-format version to 7.
6 inserts some whitespace that 7 doesn't.
2019-04-10 13:09:55 +01:00
David Chisnall
ad0a22e571 Add missing doc comments. 2019-04-10 12:49:02 +01:00
David Chisnall
2442dc4f3f [NFI] clang-format 2019-04-10 12:43:04 +01:00
David Chisnall
d0fefb8641 Don't always refer to the global pagemap.
If you're creating a new allocator and the pagemap comes from a library
that exports the pagemap accessor function but not the pagemap symbol,
you need to be able to replace this.
2019-04-10 11:57:02 +01:00
David Chisnall
607573bb28 Add missing #pragma once to pal_consts.h
If you're defining a new PAL then you need to include this file twice.
2019-04-10 11:56:07 +01:00
David Chisnall
a93f43fd2f Add some type safety to other pagemap accesses.
Introduce a descriptor for the pagemap config and check that the source
descriptor is compatible with the destination type.
2019-04-09 15:52:38 +01:00
rschust
51fbdf3a44 ZeroMem should not be a part of pal_consts.h 2019-04-09 13:56:22 +01:00
rschust
71900ef947 Created pal_consts.h. New exported functions are now prefixed with "snmalloc_". 2019-04-09 13:56:22 +01:00
rschust
f0d18760fe Exporting the global pagemap and the default memory provider's reserve function in order to support shared allocators 2019-04-09 13:56:22 +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
869b22b422 Sort test order so that perf tests start first.
These take longer, so we want to start them earlier and let the shorter
tests fill in the gaps in scheduling.
2019-02-25 16:33:57 +00:00
David Chisnall
25c365682e Pipeline names can't contain spaces. 2019-02-25 16:33:57 +00:00
David Chisnall
11ccf365d3 Move LD_PRELOAD to a separate test.
The Linux Debug build is currently one of the slowest two, pull out one
phase of it that is independent and allow it to run in parallel with the
other tests.
2019-02-25 16:33:57 +00:00
David Chisnall
ef50a0282b Attempt to make CI faster.
- Don't run an expensive functionality test in debug builds.
- Don't run the different cache configurations (they're probably going
  away soon because they help only in synthetic benchmarks).
2019-02-25 16:33:57 +00:00
David Chisnall
7f576c74d6 Update docs to mention macOS. 2019-02-25 16:33:57 +00:00
David Chisnall
feb77ac6c6 Split compile and test CI phases. 2019-02-25 16:33:57 +00:00
David Chisnall
45a31e75d1 Add some comments. 2019-02-25 12:54:16 +00:00
David Chisnall
e371edf11e Attempt at an Apple PAL.
Totally untested, but now we have macOS CI we can test there...
2019-02-25 12:54:16 +00:00
David Chisnall
aab4de7bc9 First attempt at adding macOS to CI. 2019-02-25 12:54:16 +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
d6e89b7c60 Fix Matt's code review comments. 2019-02-25 11:27:53 +00:00
David Chisnall
01bd77b356 Remove some ugly templated things.
Replace them with some very simple constexpr things.  This is what the
code used to look like, but it appears that I fundamentally
misunderstood why it didn't work.  This version should be a lot more
maintainable.
2019-02-25 11:27:53 +00:00
David Chisnall
f178028640 [NFC] clang-format again.
It appears that clang-format 6 (which CI uses) removes a newline that
clang-format 7 doesn't, but will also not add.  The new formatting
should keep 6 and 7 both happy.
2019-02-25 11:27:53 +00:00
David Chisnall
4036e54879 [NFC] clang-format. 2019-02-25 11:27:53 +00:00
David Chisnall
1892538ad1 Clean up PAL feature detection API. 2019-02-25 11:27:53 +00:00
David Chisnall
5adba34d60 Make clang happy. 2019-02-25 11:27:53 +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
80630a359f Clean up interface to the low memory notifications.
- Rename MemoryProviderState to PAL to reflect what is now is.
 - Hide calls to the PAL's low memory functions behind something that
   returns a default value if they're not implemented.
2019-02-25 11:27:53 +00:00
David Chisnall
e2a12802d5 Hide the low memory notification PAL code. 2019-02-25 11:27:53 +00:00
David Chisnall
f6349092c9 Remove debugging define.
This was enabled so CI would run it.  It probably should be enabled for
some testing, but via CMake, not like this.
2019-02-25 11:27:53 +00:00
David Chisnall
6af4c97726 Explicitly qualify a method.
Either clang or cl has a bug: cl accepts the unqualified (inherited)
method name, clang rejects it.  Both accept the qualified name.
2019-02-25 11:27:53 +00:00