diff --git a/src/compiler/compiler.c b/src/compiler/compiler.c index 478366003..ded8f1c6d 100644 --- a/src/compiler/compiler.c +++ b/src/compiler/compiler.c @@ -76,13 +76,13 @@ void compiler_init(BuildOptions *build_options) compiler.context.module_list = NULL; compiler.context.generic_module_list = NULL; compiler.context.method_extensions = NULL; - vmem_init(&ast_arena, 512); + vmem_init(&ast_arena, 4096); ast_calloc(); - vmem_init(&expr_arena, 512); + vmem_init(&expr_arena, 4096); expr_calloc(); - vmem_init(&decl_arena, 256); + vmem_init(&decl_arena, 4096); decl_calloc(); - vmem_init(&type_info_arena, 256); + vmem_init(&type_info_arena, 4096); type_info_calloc(); // Create zero index value. if (build_options->std_lib_dir) diff --git a/src/utils/malloc.c b/src/utils/malloc.c index 6f7c0f4ec..9bafdf598 100644 --- a/src/utils/malloc.c +++ b/src/utils/malloc.c @@ -17,8 +17,8 @@ static Vmem char_arena; void memory_init(size_t max_mem) { if (max_mem) vmem_set_max_limit(max_mem); - vmem_init(&arena, 2048); - vmem_init(&char_arena, 512); + vmem_init(&arena, 4096); + vmem_init(&char_arena, 2048); allocations_done = 0; arena_zero = (uintptr_t)arena.ptr; vmem_alloc(&arena, 16); diff --git a/src/utils/vmem.c b/src/utils/vmem.c index fe60cb6c7..b223224b1 100644 --- a/src/utils/vmem.c +++ b/src/utils/vmem.c @@ -28,7 +28,7 @@ static inline void mmap_init(Vmem *vmem, size_t size) } #elif PLATFORM_POSIX void* ptr = NULL; - size_t min_size = size / 16; + size_t min_size = size / 32; if (min_size < 1) min_size = size; while (size >= min_size) { @@ -74,8 +74,7 @@ static inline void* mmap_allocate(Vmem *vmem, size_t to_allocate) if (vmem->size < allocated_after) { error_exit("⚠️Fatal Error! The compiler ran out of memory: more than %u MB was allocated from a single memory arena, " - "exceeding the current maximum limit. Perhaps you called some recursive macro? " - "Note that you can increase the max memory using the command line setting '--max-mem ' and attempt compiling again.", + "exceeding the current maximum limit. Perhaps you called some recursive macro?", (unsigned)(vmem->size / (1024 * 1024))); } return ptr;