mirror of
https://github.com/RGBCube/serenity
synced 2025-07-25 14:57:35 +00:00
LibJS: Make Heap aware of all CellAllocators
Also add a link from HeapBlock to their owning CellAllocator. This fixes an issue where the Heap would skip over non-size-based cell allocators.
This commit is contained in:
parent
a31b988473
commit
11c968fa1f
6 changed files with 40 additions and 22 deletions
|
@ -18,7 +18,7 @@
|
|||
|
||||
namespace JS {
|
||||
|
||||
NonnullOwnPtr<HeapBlock> HeapBlock::create_with_cell_size(Heap& heap, size_t cell_size)
|
||||
NonnullOwnPtr<HeapBlock> HeapBlock::create_with_cell_size(Heap& heap, CellAllocator& cell_allocator, size_t cell_size)
|
||||
{
|
||||
#ifdef AK_OS_SERENITY
|
||||
char name[64];
|
||||
|
@ -27,12 +27,13 @@ NonnullOwnPtr<HeapBlock> HeapBlock::create_with_cell_size(Heap& heap, size_t cel
|
|||
char const* name = nullptr;
|
||||
#endif
|
||||
auto* block = static_cast<HeapBlock*>(heap.block_allocator().allocate_block(name));
|
||||
new (block) HeapBlock(heap, cell_size);
|
||||
new (block) HeapBlock(heap, cell_allocator, cell_size);
|
||||
return NonnullOwnPtr<HeapBlock>(NonnullOwnPtr<HeapBlock>::Adopt, *block);
|
||||
}
|
||||
|
||||
HeapBlock::HeapBlock(Heap& heap, size_t cell_size)
|
||||
HeapBlock::HeapBlock(Heap& heap, CellAllocator& cell_allocator, size_t cell_size)
|
||||
: HeapBlockBase(heap)
|
||||
, m_cell_allocator(cell_allocator)
|
||||
, m_cell_size(cell_size)
|
||||
{
|
||||
VERIFY(cell_size >= sizeof(FreelistEntry));
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue