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
David Chisnall
71cfb6da1e
[NFC] clangformat
2019-02-25 11:27:53 +00:00
David Chisnall
e5d330ec7a
Fix the tests.
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
Matthew Parkinson
6ec84856df
Merge pull request #28 from Microsoft/mpscq
...
Updated to match documentation.
2019-02-19 16:22:00 +00:00
Matthew Parkinson
9940fbd363
Fixed typo.
2019-02-19 15:44:23 +00:00
Matthew Parkinson
d588e8ecb1
Updated to match documentation.
2019-02-19 15:00:55 +00:00
Matthew Parkinson
ccccd686fb
Merge pull request #16 from Microsoft/Sizeclass
...
Simplified sizeclass calculations and added tests.
2019-02-19 13:07:08 +00:00
Matthew Parkinson
aac2b9212e
Merge pull request #21 from plietar/smart-next
...
Place the next pointer at a different place on every object.
2019-02-19 09:04:23 +00:00
Paul Liétar
ffe496dd18
Address review comments.
2019-02-18 21:29:32 +00:00
Paul Liétar
66400af419
Add a cache-friendly version of the tests.
...
This only tests CACHE_FRIENDLY_OFFSET=64, which is probably what we'll be using in the end.
2019-02-18 14:51:04 +00:00
Paul Liétar
4ac3421487
Place the next pointer at a different place on every object.
...
This limits the collision in cache buckets, especially for larger objects.
2019-02-18 14:22:50 +00:00
David Chisnall
c47eed1922
Tweaks to end bounds checking.
...
Introduce a `OnePastEnd` option for the pointer immediately after the
end of the allocation. This simplifies some of the logic in callers,
where they wants to say 'is base + length safe to use?'.
Also restructure some of the other logic somewhat.
2019-02-15 20:05:00 +01:00
Theo Butler
9a6b0aef1f
Merge pull request #23 from Microsoft/comment
...
Fix comment to represent current PAL API.
2019-02-15 13:42:59 -05:00
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
c02077a06a
Bug fix in umul code for 32-bit Win
2019-02-15 14:36:47 +00:00
Matthew Parkinson
e7d90966f6
Made the malloc tests run on Windows
2019-02-15 14:36:47 +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