| //===-- size_class_map_test.cpp ---------------------------------*- C++ -*-===// |
| // |
| // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. |
| // See https://llvm.org/LICENSE.txt for license information. |
| // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception |
| // |
| //===----------------------------------------------------------------------===// |
| |
| #include "tests/scudo_unit_test.h" |
| |
| #include "size_class_map.h" |
| |
| template <class SizeClassMap> void testSizeClassMap() { |
| typedef SizeClassMap SCMap; |
| scudo::printMap<SCMap>(); |
| scudo::validateMap<SCMap>(); |
| } |
| |
| TEST(ScudoSizeClassMapTest, DefaultSizeClassMap) { |
| testSizeClassMap<scudo::DefaultSizeClassMap>(); |
| } |
| |
| TEST(ScudoSizeClassMapTest, SvelteSizeClassMap) { |
| testSizeClassMap<scudo::SvelteSizeClassMap>(); |
| } |
| |
| TEST(ScudoSizeClassMapTest, AndroidSizeClassMap) { |
| testSizeClassMap<scudo::AndroidSizeClassMap>(); |
| } |
| |
| struct OneClassSizeClassConfig { |
| static const scudo::uptr NumBits = 1; |
| static const scudo::uptr MinSizeLog = 5; |
| static const scudo::uptr MidSizeLog = 5; |
| static const scudo::uptr MaxSizeLog = 5; |
| static const scudo::u32 MaxNumCachedHint = 0; |
| static const scudo::uptr MaxBytesCachedLog = 0; |
| }; |
| |
| TEST(ScudoSizeClassMapTest, OneClassSizeClassMap) { |
| testSizeClassMap<scudo::FixedSizeClassMap<OneClassSizeClassConfig>>(); |
| } |
| |
| #if SCUDO_CAN_USE_PRIMARY64 |
| struct LargeMaxSizeClassConfig { |
| static const scudo::uptr NumBits = 3; |
| static const scudo::uptr MinSizeLog = 4; |
| static const scudo::uptr MidSizeLog = 8; |
| static const scudo::uptr MaxSizeLog = 63; |
| static const scudo::u32 MaxNumCachedHint = 128; |
| static const scudo::uptr MaxBytesCachedLog = 16; |
| }; |
| |
| TEST(ScudoSizeClassMapTest, LargeMaxSizeClassMap) { |
| testSizeClassMap<scudo::FixedSizeClassMap<LargeMaxSizeClassConfig>>(); |
| } |
| #endif |