diff --git a/vm/errors.c b/vm/errors.c index 57dc8b66a1..f2147041a2 100755 --- a/vm/errors.c +++ b/vm/errors.c @@ -1,5 +1,12 @@ #include "master.h" +void out_of_memory(void) +{ + fprintf(stderr,"Out of memory\n\n"); + dump_generations(); + exit(1); +} + void fatal_error(char* msg, CELL tagged) { fprintf(stderr,"fatal_error: %s %lx\n",msg,tagged); diff --git a/vm/errors.h b/vm/errors.h index 227fed9228..22cd6533c3 100755 --- a/vm/errors.h +++ b/vm/errors.h @@ -19,6 +19,7 @@ typedef enum ERROR_MEMORY, } F_ERRORTYPE; +void out_of_memory(void); void fatal_error(char* msg, CELL tagged); void critical_error(char* msg, CELL tagged); DECLARE_PRIMITIVE(die); diff --git a/vm/os-unix.c b/vm/os-unix.c index 48d9a2dea8..d4aebad537 100755 --- a/vm/os-unix.c +++ b/vm/os-unix.c @@ -174,7 +174,7 @@ F_SEGMENT *alloc_segment(CELL size) MAP_ANON | MAP_PRIVATE,-1,0); if(array == (char*)-1) - fatal_error("Out of memory in alloc_segment",0); + out_of_memory(); if(mprotect(array,pagesize,PROT_NONE) == -1) fatal_error("Cannot protect low guard page",(CELL)array); diff --git a/vm/os-windows.c b/vm/os-windows.c index dc931d31c8..4c21c9b5c9 100755 --- a/vm/os-windows.c +++ b/vm/os-windows.c @@ -171,7 +171,7 @@ F_SEGMENT *alloc_segment(CELL size) if((mem = (char *)VirtualAlloc(NULL, getpagesize() * 2 + size, MEM_COMMIT, PAGE_EXECUTE_READWRITE)) == 0) - fatal_error("Out of memory in alloc_segment",0); + out_of_memory(); if (!VirtualProtect(mem, getpagesize(), PAGE_NOACCESS, &ignore)) fatal_error("Cannot allocate low guard page", (CELL)mem);