Clean up out of memory handler
parent
ce4858b656
commit
3d5e96172f
|
@ -18,6 +18,11 @@ void primitive_set_compiled_offset(void)
|
|||
{
|
||||
CELL offset = unbox_unsigned_cell();
|
||||
compiling.here = offset;
|
||||
if(compiling.here > compiling.limit)
|
||||
{
|
||||
fprintf(stderr,"Code space exhausted\n");
|
||||
factorbug();
|
||||
}
|
||||
}
|
||||
|
||||
void primitive_literal_top(void)
|
||||
|
|
|
@ -92,6 +92,12 @@ INLINE void *allot_zone(ZONE *z, CELL a)
|
|||
{
|
||||
CELL h = z->here;
|
||||
z->here = h + align8(a);
|
||||
if(z->here > z->limit)
|
||||
{
|
||||
fprintf(stderr,"Nursery space exhausted\n");
|
||||
factorbug();
|
||||
}
|
||||
|
||||
allot_barrier(h);
|
||||
return (void*)h;
|
||||
}
|
||||
|
|
|
@ -18,17 +18,7 @@ static bool in_page(void *fault, void *i_area, CELL area_size, int offset)
|
|||
|
||||
void signal_handler(int signal, siginfo_t* siginfo, void* uap)
|
||||
{
|
||||
if(nursery.here > nursery.limit)
|
||||
{
|
||||
fprintf(stderr,"Nursery space exhausted\n");
|
||||
factorbug();
|
||||
}
|
||||
else if(compiling.here + sizeof(CELL) > compiling.limit)
|
||||
{
|
||||
fprintf(stderr,"Code space exhausted\n");
|
||||
factorbug();
|
||||
}
|
||||
else if(in_page(siginfo->si_addr, (void *) ds_bot, 0, -1))
|
||||
if(in_page(siginfo->si_addr, (void *) ds_bot, 0, -1))
|
||||
signal_stack_error(false, false);
|
||||
else if(in_page(siginfo->si_addr, (void *) ds_bot, ds_size, 0))
|
||||
signal_stack_error(false, true);
|
||||
|
|
Loading…
Reference in New Issue