: overflow-c ( -- ) overflow-c overflow-c ;
+! The VM cannot recover from callstack overflow on Windows or
+! OpenBSD, because no facility exists to run memory protection
+! fault handlers on an alternate callstack.
os [ windows? ] [ openbsd? ] bi or [
- [ overflow-c ] [ { "kernel-error" 14 f f } = ] must-fail-with
+ [ overflow-c ] [ { "kernel-error" 15 f f } = ] must-fail-with
] unless
[ -7 <byte-array> ] must-fail
else if(ctx->retainstack_seg->overflow_p(addr))
general_error(ERROR_RETAINSTACK_OVERFLOW,false_object,false_object,stack);
else if(ctx->callstack_seg->underflow_p(addr))
- general_error(ERROR_CALLSTACK_UNDERFLOW,false_object,false_object,stack);
- else if(ctx->callstack_seg->overflow_p(addr))
general_error(ERROR_CALLSTACK_OVERFLOW,false_object,false_object,stack);
+ else if(ctx->callstack_seg->overflow_p(addr))
+ general_error(ERROR_CALLSTACK_UNDERFLOW,false_object,false_object,stack);
else
general_error(ERROR_MEMORY,allot_cell(addr),false_object,stack);
}