1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-25 17:57:35 +00:00

LibJS: Expose minimum possible cell size of JS::Heap

Use this to avoid creating a 16 byte cell allocator on x86_64, where the
size of FreelistEntry is 24 bytes. Every JS::Cell must be at least the
size of the FreelistEntry or things start crashing, so the 16 byte
allocator was wasted on that platform.
This commit is contained in:
Andrew Kaster 2021-05-29 06:24:30 -06:00 committed by Linus Groh
parent 07c62f9f42
commit 81a5dcde84
2 changed files with 7 additions and 1 deletions

View file

@ -23,7 +23,10 @@ namespace JS {
Heap::Heap(VM& vm)
: m_vm(vm)
{
m_allocators.append(make<CellAllocator>(16));
if constexpr (HeapBlock::min_possible_cell_size <= 16) {
m_allocators.append(make<CellAllocator>(16));
}
static_assert(HeapBlock::min_possible_cell_size <= 24, "Heap Cell tracking uses too much data!");
m_allocators.append(make<CellAllocator>(32));
m_allocators.append(make<CellAllocator>(64));
m_allocators.append(make<CellAllocator>(128));