Matthew Parkinson
8d5432c559
Expensive test property. ( #43 )
...
Make expensive tests run sequentially to prevent possible out-of-memory issues.
2019-05-08 15:51:41 +01:00
Matthew Parkinson
8fcedfc290
Fix the GCC build ( #40 )
...
* Make it compile with GCC.
* Add GCC to CI.
* Add warning to documentation about using GCC.
2019-05-05 19:58:37 +01:00
David Chisnall
0b64536be4
Merge pull request #39 from Microsoft/clang-tidy-ci
...
Add clang-tidy to CI.
2019-04-30 10:22:13 -04:00
David Chisnall
d978b7a68f
Apply clang-tidy checks to the Linux build.
2019-04-30 15:06:45 +01:00
David Chisnall
d259a87d03
Make clang-tidy fail when it ought to.
...
clang-tidy exits with an error code of 0 if the code compiles, even if
there are warnings. Make it generate a file with the errors and fail
the test if this file exists.
Also remove the -fix flag - we don't want clang-tidy to fix things in CI
(yet?).
2019-04-30 15:02:55 +01:00
David Chisnall
4f8c7ba258
Add clang-tidy to CI.
2019-04-30 14:52:19 +01:00
David Chisnall
747063db87
Merge pull request #38 from Microsoft/clang-tidy
...
Clang tidy
2019-04-30 09:41:12 -04:00
David Chisnall
8f082c6a9c
Fix incorrect edit in earlier commit.
2019-04-30 14:11:15 +01:00
David Chisnall
840e00b430
Fix sign warning.
2019-04-30 14:08:41 +01:00
David Chisnall
8bd136c224
Remove all instances of static_cast<size_t>(1).
...
In preparation for removing magic numbers, simplify code that is
computing masks with a single bit set.
2019-04-30 11:50:32 +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
91f2310215
More checks.
...
Use using instead of typedef.
2019-04-30 09:46:01 +01:00
David Chisnall
5c197e4ae4
[NFC] More checks, comments on end of namespace braces.
2019-04-30 09:46:01 +01:00
David Chisnall
49ece8f4e1
Enable the static analyser from clang-tidy.
...
Fix a false positive. The loops in the pagemap accessor are too
complicated for the static analyser to check, so it doesn't spot that a
non-null return is impossible.
2019-04-30 09:46:01 +01:00
David Chisnall
d06e539732
Add more checks.
...
Add missing parentheses in UNUSED (shouldn't matter, but keeps a checker
that may catch real bugs elsewhere happy).
2019-04-30 09:46:01 +01:00
David Chisnall
c2679188ad
Fix the build on Windows.
2019-04-30 09:38:35 +01:00
David Chisnall
b5bc09ced3
Add some more checkers.
...
Change the result of `operator=` on `Mod` to return `Mod&`. In this
example:
```c++
Mod<4, int> a;
int b = (a = 8);
```
The value of `b` will now be 0, not 8, and will equal the value of `a`.
Hopefully this is less confusing to users of this class.
2019-04-29 15:14:43 +01:00
David Chisnall
22d33ebf99
Add another checker.
...
Use nullptr where appropriate.
2019-04-29 15:00:25 +01:00
David Chisnall
c3c71afa57
Move pagemap to using InvalidPointer.
...
Replace a constant `uintptr_t` value of 1 that was repeatedly cast to a
pointer with an `InvalidPointer<1>`.
2019-04-29 13:46:57 +01:00
David Chisnall
28fac4d700
Fix the remaining clang-tidy warnings.
...
This introduces a new `address_t` type and two new casts: `pointer_cast`
and `address_cast` for casting between an `address_t` and a pointer.
These should make it easier to audit the codebase for casts between
pointers and integers. In particular, the remaining `reinterpret_cast`s
and `pointer_cast`s should be the only places where we could perform
invalid pointer arithmetic.
Also adds a `pointer_offset` helper that adds an offset (in bytes) to a
pointer, preserving its original type. This is a sufficiently common
pattern that it seemed worthwhile to centralise it.
2019-04-29 13:37:05 +01:00
Matthew Parkinson
09c884b553
Merge pull request #37 from Microsoft/invalid_pointer
...
Add an explicit invalid pointer type.
2019-04-29 11:35:11 +01:00
David Chisnall
4bafca9be7
[NFC] Automatic fixes from clang-tidy.
2019-04-29 11:33:07 +01:00
David Chisnall
e6325e5cd2
Add a clang-tidy config file.
...
Small set of checks for now, we can add to this over time.
2019-04-29 11:30:23 +01:00
David Chisnall
365571b2b8
Add an explicit invalid pointer type.
...
This is a generalisation of `std::nullptr_t` that allows non-0 values of
pointer-sized-but-not-a-pointer thing. `DLList` now takes an
`InvalidPointer`, `nullptr_t`, or some other compatible class as a
sentinel value instead of a `uintptr_t`.
2019-04-29 11:22:40 +01:00
Matthew Parkinson
4a0299ec77
Clang format
2019-04-29 11:02:47 +01:00
Matthew Parkinson
f1835813bd
uintptr_max instead of -1/~0
2019-04-29 11:02:47 +01:00
Matthew Parkinson
c471e1a271
CR
2019-04-29 11:02:47 +01:00
Matthew Parkinson
8eb6e36966
Add comment about min/max.
2019-04-29 11:02:47 +01:00
Matthew Parkinson
70e2fcf26f
Fix 32bit build
2019-04-29 11:02:47 +01:00
Matthew Parkinson
5030fff9bd
Missing include from test.
2019-04-29 11:02:47 +01:00
Matthew Parkinson
f1a26db8e5
Missing externs
2019-04-29 11:02:47 +01:00
Matthew Parkinson
37afe9d079
Clang format
2019-04-29 11:02:47 +01:00
Matthew Parkinson
f88bcdbf58
Made alloc_chunk typed
...
Alloc_chunk now allocates and calls the constructor.
2019-04-29 11:02:47 +01:00
Matthew Parkinson
2d831920ea
Factored casting in external pointer calculation
2019-04-29 11:02:47 +01:00
Matthew Parkinson
a8618b0892
Use uintptr_t in signature for pagemap
...
We don't follow the pointers passed into the pagemap directly, but
instead use them to calculate indexs into the pagemap. Use uintptr_t
means it is easier to perform address arithmetic, and not have casts
back to void* everywhere.
2019-04-29 11:02:47 +01:00
Matthew Parkinson
47428a096c
Removing some casts and uses of void*
2019-04-29 11:02:47 +01:00
Matthew Parkinson
2c613b4f8a
Factored casts out of DLL/mpmcstack/mpscq.
...
Nicer use of decltype to constrain instances.
Made a terminator method, to factor out casts.
2019-04-29 11:02:47 +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
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