1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-31 14:28:12 +00:00

LibJS: Port garbage collector to Linux

Well that was easy. LibJS can now run on Linux :^)
This commit is contained in:
Andreas Kling 2020-03-23 13:14:57 +01:00
parent 538537dfd0
commit 79e065f0a2
2 changed files with 32 additions and 3 deletions

View file

@ -37,7 +37,11 @@ NonnullOwnPtr<HeapBlock> HeapBlock::create_with_cell_size(Heap& heap, size_t cel
{
char name[64];
snprintf(name, sizeof(name), "LibJS: HeapBlock(%zu)", cell_size);
#ifdef __serenity__
auto* block = (HeapBlock*)serenity_mmap(nullptr, block_size, PROT_READ | PROT_WRITE, MAP_ANONYMOUS | MAP_PRIVATE, 0, 0, block_size, name);
#else
auto* block = (HeapBlock*)aligned_alloc(block_size, block_size);
#endif
ASSERT(block != MAP_FAILED);
new (block) HeapBlock(heap, cell_size);
return NonnullOwnPtr<HeapBlock>(NonnullOwnPtr<HeapBlock>::Adopt, *block);
@ -45,8 +49,12 @@ NonnullOwnPtr<HeapBlock> HeapBlock::create_with_cell_size(Heap& heap, size_t cel
void HeapBlock::operator delete(void* ptr)
{
#ifdef __serenity__
int rc = munmap(ptr, block_size);
ASSERT(rc == 0);
#else
free(ptr);
#endif
}
HeapBlock::HeapBlock(Heap& heap, size_t cell_size)