Merge branch 'master' of git://factorcode.org/git/factor
commit
345c7d4d1a
|
@ -19,8 +19,13 @@ load-help? off
|
||||||
[
|
[
|
||||||
[
|
[
|
||||||
! Rehash hashtables, since bootstrap.image creates them
|
! Rehash hashtables, since bootstrap.image creates them
|
||||||
! using the host image's hashing algorithms
|
! using the host image's hashing algorithms. We don't
|
||||||
[ hashtable? ] instances [ rehash ] each
|
! use each-object here since the catch stack isn't yet
|
||||||
|
! set up.
|
||||||
|
begin-scan
|
||||||
|
[ hashtable? ] pusher [ (each-object) ] dip
|
||||||
|
end-scan
|
||||||
|
[ rehash ] each
|
||||||
boot
|
boot
|
||||||
] %
|
] %
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,12 @@
|
||||||
#include "master.h"
|
#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)
|
void fatal_error(char* msg, CELL tagged)
|
||||||
{
|
{
|
||||||
fprintf(stderr,"fatal_error: %s %lx\n",msg,tagged);
|
fprintf(stderr,"fatal_error: %s %lx\n",msg,tagged);
|
||||||
|
|
|
@ -19,6 +19,7 @@ typedef enum
|
||||||
ERROR_MEMORY,
|
ERROR_MEMORY,
|
||||||
} F_ERRORTYPE;
|
} F_ERRORTYPE;
|
||||||
|
|
||||||
|
void out_of_memory(void);
|
||||||
void fatal_error(char* msg, CELL tagged);
|
void fatal_error(char* msg, CELL tagged);
|
||||||
void critical_error(char* msg, CELL tagged);
|
void critical_error(char* msg, CELL tagged);
|
||||||
DECLARE_PRIMITIVE(die);
|
DECLARE_PRIMITIVE(die);
|
||||||
|
|
|
@ -174,7 +174,7 @@ F_SEGMENT *alloc_segment(CELL size)
|
||||||
MAP_ANON | MAP_PRIVATE,-1,0);
|
MAP_ANON | MAP_PRIVATE,-1,0);
|
||||||
|
|
||||||
if(array == (char*)-1)
|
if(array == (char*)-1)
|
||||||
fatal_error("Out of memory in alloc_segment",0);
|
out_of_memory();
|
||||||
|
|
||||||
if(mprotect(array,pagesize,PROT_NONE) == -1)
|
if(mprotect(array,pagesize,PROT_NONE) == -1)
|
||||||
fatal_error("Cannot protect low guard page",(CELL)array);
|
fatal_error("Cannot protect low guard page",(CELL)array);
|
||||||
|
|
|
@ -171,7 +171,7 @@ F_SEGMENT *alloc_segment(CELL size)
|
||||||
|
|
||||||
if((mem = (char *)VirtualAlloc(NULL, getpagesize() * 2 + size,
|
if((mem = (char *)VirtualAlloc(NULL, getpagesize() * 2 + size,
|
||||||
MEM_COMMIT, PAGE_EXECUTE_READWRITE)) == 0)
|
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))
|
if (!VirtualProtect(mem, getpagesize(), PAGE_NOACCESS, &ignore))
|
||||||
fatal_error("Cannot allocate low guard page", (CELL)mem);
|
fatal_error("Cannot allocate low guard page", (CELL)mem);
|
||||||
|
|
Loading…
Reference in New Issue