mirror of
https://github.com/fergalmoran/ladybird.git
synced 2026-02-19 14:14:41 +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:
committed by
Linus Groh
parent
07c62f9f42
commit
81a5dcde84
@@ -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));
|
||||
|
||||
@@ -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);
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user