58 static auto the() -> Heap&;
60 auto allocate(usize size, usize align) -> di::Result<di::AllocationResult<>>;
66 constexpr static auto block_sizes = di::Array {
67 di::Tuple { 64ZU, 64ZU }, di::Tuple { 128ZU, 128ZU }, di::Tuple { 256ZU, 256ZU },
68 di::Tuple { 512ZU, 512ZU }, di::Tuple { 1024ZU, 1024ZU }, di::Tuple { 2048ZU, 2048ZU },
69 di::Tuple { 4096ZU, 4096ZU }, di::Tuple { 16384ZU, 4096ZU },
72 constexpr static auto block_size_count = block_sizes.size();
74 constexpr static auto get_block_index(usize size, usize align) -> di::Optional<usize> {
75 for (
auto i = 0ZU; i < block_size_count; ++i) {
76 auto [block_size, block_align] = block_sizes[i];
77 if (size <= block_size && align <= block_align) {
85 di::Synchronized<di::Array<detail::FreeListList, block_size_count>> m_blocks;