Fix `static_assert()` scope in `SizeClassAllocator32`.

It should be at the class scope and not inside the `Init(...)` function
because we want to error out as soon as the wrong type is constructed.
At the function scope the `static_assert` is only checked if the
function might be called.

This is a follow up to r349138.

rdar://problem/45284065

llvm-svn: 349959
This commit is contained in:
Dan Liew 2018-12-21 21:41:31 +00:00
parent 47a6129e26
commit 09f6d77840
1 changed files with 4 additions and 3 deletions

View File

@ -57,6 +57,10 @@ class SizeClassAllocator32 {
typedef typename Params::ByteMap ByteMap; typedef typename Params::ByteMap ByteMap;
typedef typename Params::MapUnmapCallback MapUnmapCallback; typedef typename Params::MapUnmapCallback MapUnmapCallback;
static_assert(
is_same<typename ByteMap::AddressSpaceView, AddressSpaceView>::value,
"AddressSpaceView type mismatch");
static const bool kRandomShuffleChunks = Params::kFlags & static const bool kRandomShuffleChunks = Params::kFlags &
SizeClassAllocator32FlagMasks::kRandomShuffleChunks; SizeClassAllocator32FlagMasks::kRandomShuffleChunks;
static const bool kUseSeparateSizeClassForBatch = Params::kFlags & static const bool kUseSeparateSizeClassForBatch = Params::kFlags &
@ -109,9 +113,6 @@ class SizeClassAllocator32 {
typedef SizeClassAllocator32LocalCache<ThisT> AllocatorCache; typedef SizeClassAllocator32LocalCache<ThisT> AllocatorCache;
void Init(s32 release_to_os_interval_ms) { void Init(s32 release_to_os_interval_ms) {
static_assert(
is_same<typename ByteMap::AddressSpaceView, AddressSpaceView>::value,
"AddressSpaceView type mismatch");
possible_regions.Init(); possible_regions.Init();
internal_memset(size_class_info_array, 0, sizeof(size_class_info_array)); internal_memset(size_class_info_array, 0, sizeof(size_class_info_array));
} }