-namespace factor
-{
-
-/* Runtime errors */
-enum vm_error_type
-{
- ERROR_EXPIRED = 0,
- ERROR_IO,
- ERROR_NOT_IMPLEMENTED,
- ERROR_TYPE,
- ERROR_DIVIDE_BY_ZERO,
- ERROR_SIGNAL,
- ERROR_ARRAY_SIZE,
- ERROR_C_STRING,
- ERROR_FFI,
- ERROR_HEAP_SCAN,
- ERROR_UNDEFINED_SYMBOL,
- ERROR_DS_UNDERFLOW,
- ERROR_DS_OVERFLOW,
- ERROR_RS_UNDERFLOW,
- ERROR_RS_OVERFLOW,
- ERROR_MEMORY,
+namespace factor {
+
+// Runtime errors must be kept in sync with:
+// basis/debugger/debugger.factor
+// core/kernel/kernel.factor
+#define KERNEL_ERROR 0xfac7
+
+enum vm_error_type {
+ ERROR_EXPIRED = 0,
+ ERROR_IO,
+ ERROR_UNUSED,
+ ERROR_TYPE,
+ ERROR_DIVIDE_BY_ZERO,
+ ERROR_SIGNAL,
+ ERROR_ARRAY_SIZE,
+ ERROR_OUT_OF_FIXNUM_RANGE,
+ ERROR_FFI,
+ ERROR_UNDEFINED_SYMBOL,
+ ERROR_DATASTACK_UNDERFLOW,
+ ERROR_DATASTACK_OVERFLOW,
+ ERROR_RETAINSTACK_UNDERFLOW,
+ ERROR_RETAINSTACK_OVERFLOW,
+ ERROR_CALLSTACK_UNDERFLOW,
+ ERROR_CALLSTACK_OVERFLOW,
+ ERROR_MEMORY,
+ ERROR_FP_TRAP,
+ ERROR_INTERRUPT,
+ ERROR_CALLBACK_SPACE_OVERFLOW
};
-void out_of_memory();
void fatal_error(const char* msg, cell tagged);
void critical_error(const char* msg, cell tagged);
-
-PRIMITIVE(die);
-
-void throw_error(cell error, stack_frame *native_stack);
-void general_error(vm_error_type error, cell arg1, cell arg2, stack_frame *native_stack);
-void divide_by_zero_error();
-void memory_protection_error(cell addr, stack_frame *native_stack);
-void signal_error(int signal, stack_frame *native_stack);
-void type_error(cell type, cell tagged);
-void not_implemented_error();
-
-PRIMITIVE(call_clear);
-PRIMITIVE(unimplemented);
-
-/* Global variables used to pass fault handler state from signal handler to
-user-space */
-extern cell signal_number;
-extern cell signal_fault_addr;
-extern stack_frame *signal_callstack_top;
-
void memory_signal_handler_impl();
-void misc_signal_handler_impl();
+void fp_signal_handler_impl();
+void synchronous_signal_handler_impl();
}