diff --git a/Userland/Libraries/LibJS/Heap/Heap.cpp b/Userland/Libraries/LibJS/Heap/Heap.cpp index 11042ea5e9..0f9501ee44 100644 --- a/Userland/Libraries/LibJS/Heap/Heap.cpp +++ b/Userland/Libraries/LibJS/Heap/Heap.cpp @@ -23,7 +23,10 @@ namespace JS { Heap::Heap(VM& vm) : m_vm(vm) { - m_allocators.append(make(16)); + if constexpr (HeapBlock::min_possible_cell_size <= 16) { + m_allocators.append(make(16)); + } + static_assert(HeapBlock::min_possible_cell_size <= 24, "Heap Cell tracking uses too much data!"); m_allocators.append(make(32)); m_allocators.append(make(64)); m_allocators.append(make(128)); diff --git a/Userland/Libraries/LibJS/Heap/HeapBlock.h b/Userland/Libraries/LibJS/Heap/HeapBlock.h index 85a6307ae3..6b2c1eff12 100644 --- a/Userland/Libraries/LibJS/Heap/HeapBlock.h +++ b/Userland/Libraries/LibJS/Heap/HeapBlock.h @@ -101,6 +101,9 @@ private: size_t m_next_lazy_freelist_index { 0 }; FreelistEntry* m_freelist { nullptr }; alignas(Cell) u8 m_storage[]; + +public: + static constexpr size_t min_possible_cell_size = sizeof(FreelistEntry); }; }