enum {
kRandomShuffleChunks = 1,
kUseSeparateSizeClassForBatch = 2,
+ kForTest = 4,
};
};
typedef typename Params::ByteMap ByteMap;
typedef typename Params::MapUnmapCallback MapUnmapCallback;
+#if SANITIZER_WORDSIZE == 32
+ using BM = FlatByteMap<(Params::kSpaceSize >> Params::kRegionSizeLog),
+ AddressSpaceView>;
+#elif SANITIZER_WORDSIZE == 64
+ using BM =
+ TwoLevelByteMap<((Params::kSpaceSize >> Params::kRegionSizeLog) >> 12),
+ 1 << 12, AddressSpaceView, MapUnmapCallback>;
+#endif
+ static_assert((Params::kFlags & SizeClassAllocator32FlagMasks::kForTest) ||
+ is_same<BM, ByteMap>::value,
+ "Unexpected ByteMap type");
+
static_assert(
+
is_same<typename ByteMap::AddressSpaceView, AddressSpaceView>::value,
"AddressSpaceView type mismatch");
static const uptr kMetadataSize = 16;
typedef ::SizeClassMap SizeClassMap;
typedef NoOpMapUnmapCallback MapUnmapCallback;
- static const uptr kFlags = 0;
+ static const uptr kFlags = SizeClassAllocator32FlagMasks::kForTest;
using AddressSpaceView = AddressSpaceViewTy;
};
static const uptr kMetadataSize = 16;
typedef ::SizeClassMap SizeClassMap;
typedef NoOpMapUnmapCallback MapUnmapCallback;
- static const uptr kFlags = 0;
+ static const uptr kFlags = SizeClassAllocator32FlagMasks::kForTest;
using AddressSpaceView = AddressSpaceViewTy;
};
static const uptr kMetadataSize = 16;
typedef CompactSizeClassMap SizeClassMap;
typedef NoOpMapUnmapCallback MapUnmapCallback;
- static const uptr kFlags = 0;
+ static const uptr kFlags = SizeClassAllocator32FlagMasks::kForTest;
using AddressSpaceView = AddressSpaceViewTy;
};
static const uptr kMetadataSize = 16;
typedef VeryCompactSizeClassMap SizeClassMap;
typedef NoOpMapUnmapCallback MapUnmapCallback;
- static const uptr kFlags = 0;
+ static const uptr kFlags = SizeClassAllocator32FlagMasks::kForTest;
using AddressSpaceView = AddressSpaceViewTy;
};
static const uptr kMetadataSize = 16;
typedef DenseSizeClassMap SizeClassMap;
typedef NoOpMapUnmapCallback MapUnmapCallback;
- static const uptr kFlags = 0;
+ static const uptr kFlags = SizeClassAllocator32FlagMasks::kForTest;
using AddressSpaceView = AddressSpaceViewTy;
};
using AddressSpaceView = AddressSpaceViewTy;
using ByteMap = FlatByteMap<kFlatByteMapSize, AddressSpaceView>;
typedef NoOpMapUnmapCallback MapUnmapCallback;
- static const uptr kFlags = 0;
+ static const uptr kFlags = SizeClassAllocator32FlagMasks::kForTest;
};
template <typename AddressSpaceView>
using Allocator32CompactASVT =
using ByteMap = FlatByteMap<kFlatByteMapSize, AddressSpaceView>;
typedef NoOpMapUnmapCallback MapUnmapCallback;
static const uptr kFlags =
- SizeClassAllocator32FlagMasks::kUseSeparateSizeClassForBatch;
+ SizeClassAllocator32FlagMasks::kUseSeparateSizeClassForBatch |
+ SizeClassAllocator32FlagMasks::kForTest;
};
template <typename AddressSpaceView>
using Allocator32SeparateBatchesASVT =
static const uptr kMetadataSize = 16;
typedef ::SizeClassMap SizeClassMap;
typedef TestMapUnmapCallback MapUnmapCallback;
- static const uptr kFlags = 0;
+ static const uptr kFlags = SizeClassAllocator32FlagMasks::kForTest;
using AddressSpaceView = AddressSpaceViewTy;
};
using AddressSpaceView = AddressSpaceViewTy;
using ByteMap = FlatByteMap<kFlatByteMapSize, AddressSpaceView>;
typedef TestMapUnmapCallback MapUnmapCallback;
- static const uptr kFlags = 0;
+ static const uptr kFlags = SizeClassAllocator32FlagMasks::kForTest;
};
TEST(SanitizerCommon, SizeClassAllocator32MapUnmapCallback) {
static const uptr kMetadataSize = 0;
typedef SpecialSizeClassMap SizeClassMap;
typedef NoOpMapUnmapCallback MapUnmapCallback;
- static const uptr kFlags = 0;
+ static const uptr kFlags = SizeClassAllocator32FlagMasks::kForTest;
using AddressSpaceView = AddressSpaceViewTy;
};
using AddressSpaceView = LocalAddressSpaceView;
using ByteMap = __tsan::ByteMap;
typedef __tsan::MapUnmapCallback MapUnmapCallback;
- static const uptr kFlags = 0;
+ static const uptr kFlags = SizeClassAllocator32FlagMasks::kForTest;
};
typedef SizeClassAllocator32<AP32> PrimaryAllocator;
#else
static const uptr kMetadataSize = 0;
typedef DefaultSizeClassMap SizeClassMap;
typedef __tsan::MapUnmapCallback MapUnmapCallback;
- static const uptr kFlags = 0;
+ static const uptr kFlags = SizeClassAllocator32FlagMasks::kForTest;
using AddressSpaceView = LocalAddressSpaceView;
};
typedef SizeClassAllocator64<AP64> PrimaryAllocator;